<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          三分鐘Docker-鏡像、容器實(shí)戰(zhàn)篇

          共 5727字,需瀏覽 12分鐘

           ·

          2020-07-28 17:17

          本文主要內(nèi)容:

          1. Docker 鏡像、容器 常用命令整理

          2. 使用Docker常見命令,搭建Consul集群

          3. 通過創(chuàng)建自定義鏡像,把.NetCore Api運(yùn)行在Docker中

          1.鏡像、容器命令

          鏡像
          序號命令描述
          1docker image build基于Dockerfile創(chuàng)建鏡像
          2docker image history顯示鏡像的歷史記錄,主要因?yàn)殓R像文件由多個(gè)層組成,那么可以使用該命令知道各個(gè)層的內(nèi)容具體是什么。
          3docker image importImport the contents from a tarball to create a filesystem image
          4docker image inspect顯示鏡像的詳細(xì)信息
          5docker image load載入鏡像,可以使用該命令將導(dǎo)出的tar文件再導(dǎo)入本地鏡像庫
          6docker image ls列出本地主機(jī)上安裝的所有鏡像
          7docker image prune清理一些臨時(shí)的鏡像文件,未被使用的。
          8docker image pull從registry中拉取鏡像或存儲庫(repository),可以指定Tag(一般用來標(biāo)識版本信息),默認(rèn)會選擇latest標(biāo)簽,下載最新版本的鏡像。
          9docker image push將鏡像或存儲庫推送到注冊表(registry)
          10docker image rm刪除一個(gè)或多個(gè)鏡像
          11docker image save存取鏡像,如果要導(dǎo)出鏡像到本地文件,可以使用該命令
          12docker image tag為本地鏡像添加新的標(biāo)簽。
          容器
          序號命令描述
          01docker container attach進(jìn)入容器
          02docker container commitCreate a new image from a container’s changes
          03docker container cp在容器和主機(jī)之間復(fù)制文件
          04docker container create創(chuàng)建容器,狀態(tài)是停止的,需要使用start命令
          05docker container diff查看容器內(nèi)文件系統(tǒng)的變更
          06docker container exec可以在運(yùn)行中容器內(nèi)執(zhí)行命令
          07docker container export導(dǎo)出容器,文件類型后綴tar
          08docker container inspect查看容器詳情
          09docker container killKill one or more running containers
          10docker container logs查看容器輸出記錄
          12docker container ls列出所有容器
          13docker container pause暫停容器
          14docker container port查看端口映射
          15docker container pruneRemove all stopped containers
          16docker container renameRename a container
          17docker container restartRestart one or more containers
          18docker container rm刪除一個(gè)或多個(gè)容器
          19docker container run運(yùn)行一個(gè)容器,等同于先create、在start命令
          20docker container start啟動容器
          20docker container stats查看統(tǒng)計(jì)資源信息(cpu,內(nèi)存,存儲,網(wǎng)絡(luò)等使用情況)
          21docker container stop終止容器
          22docker container top查看容器內(nèi)進(jìn)程
          23docker container unpauseUnpause all processes within one or more containers
          24docker container update更新容器配置 比如啟動方式--restart=always
          25docker container waitBlock until one or more containers stop, then print their exit codes

          2.使用Docker常見命令,搭建Consul集群

          拉取consul鏡像到本地
          docker pull consul
          運(yùn)行consul容器并且添加服務(wù)節(jié)點(diǎn)consul_node_1和consul管理界面
            docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_1 consul agent -server  -bootstrap -ui -node=consul_node_1 -client='0.0.0.0'

          單機(jī)版的consul已經(jīng)運(yùn)行起來了,下面搭建個(gè)consul集群

          查看consul_server_1容器的ip地址,再添加2個(gè)服務(wù)節(jié)點(diǎn),組成集群
          docker inspect --format='{{.NetworkSettings.IPAddress}}' consul_server_1
          添加consul_node_2節(jié)點(diǎn)
           docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_2 consul agent -server -node=consul_node_2  -join='172.17.0.2'
          添加consul_node_3節(jié)點(diǎn)
          docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_3 consul agent -server -node=consul_node_3  -join='172.17.0.2'
          最后添加3個(gè)client 加入集群
          docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_4 consul agent -client -node=consul_node_4 -join='172.17.0.2' -client='0.0.0.0'


          docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_5 consul agent -client -node=consul_node_5 -join='172.17.0.2' -client='0.0.0.0'


          docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=consul_server_6 consul agent -client -node=consul_node_5 -join='172.17.0.2' -client='0.0.0.0'
          在瀏覽器輸入localhost:8500,查看集群信息

          client節(jié)點(diǎn)是不參與leader選舉的,使用如下命令查看

           docker exec consul_server_1 consul operator raft list-peers

          使用如下命令查看集群情況

          docker exec consul_server_1 consul members
          consul參數(shù)解釋:
          • –net=host docker參數(shù), 使得docker容器越過了net namespace的隔離,免去手動指定端口映射的步驟

          • -server consul支持以server或client的模式運(yùn)行, server是服務(wù)發(fā)現(xiàn)模塊的核心, client主要用于轉(zhuǎn)發(fā)請求

          • -advertise 將本機(jī)私有IP傳遞到consul

          • -retry-join 指定要加入的consul節(jié)點(diǎn)地址,失敗后會重試, 可多次指定不同的地址

          • -client 指定consul綁定在哪個(gè)client地址上,這個(gè)地址可提供HTTP、DNS、RPC等服務(wù),默認(rèn)是>127.0.0.1

          • -bind 綁定服務(wù)器的ip地址;該地址用來在集群內(nèi)部的通訊,集群內(nèi)的所有節(jié)點(diǎn)到地址必須是可達(dá)的,>默認(rèn)是0.0.0.0

          • allow_stale 設(shè)置為true則表明可從consul集群的任一server節(jié)點(diǎn)獲取dns信息, false則表明每次請求都會>經(jīng)過consul的server leader

          • -bootstrap-expect 數(shù)據(jù)中心中預(yù)期的服務(wù)器數(shù)。指定后,Consul將等待指定數(shù)量的服務(wù)器可用,然后>啟動群集。允許自動選舉leader,但不能與傳統(tǒng)-bootstrap標(biāo)志一起使用, 需要在server模式下運(yùn)行。

          • -data-dir 數(shù)據(jù)存放的位置,用于持久化保存集群狀態(tài)

          • -node 群集中此節(jié)點(diǎn)的名稱,這在群集中必須是唯一的,默認(rèn)情況下是節(jié)點(diǎn)的主機(jī)名。

          • -config-dir 指定配置文件,當(dāng)這個(gè)目錄下有 .json 結(jié)尾的文件就會被加載,詳細(xì)可參考https://www.consul.io/docs/agent/options.html#configuration_files

          • -enable-script-checks 檢查服務(wù)是否處于活動狀態(tài),類似開啟心跳

          • -datacenter 數(shù)據(jù)中心名稱

          • -ui 開啟ui界面

          • -join 指定ip, 加入到已有的集群中

          3.通過創(chuàng)建自定義鏡像,把.NetCore Api運(yùn)行在Docker中

          生成Dockerfile文件

          本示例使用前幾天分享的項(xiàng)目把AAStore.ProductCatalog.Api,選中項(xiàng)目右鍵->添加->Docker支持,就會看到生產(chǎn)的Dockerfile文件

          #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

          FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
          WORKDIR /app
          EXPOSE 8081
          EXPOSE 18081

          FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
          WORKDIR /src
          COPY ["AAStore.ProductCatalog.Api/AAStore.ProductCatalog.Api.csproj", "AAStore.ProductCatalog.Api/"]
          COPY ["AAStore.ProductCatalog/AAStore.ProductCatalog.csproj", "AAStore.ProductCatalog/"]
          COPY ["AAStore.ProductCatalog.DataContracts/AAStore.ProductCatalog.DataContracts.csproj", "AAStore.ProductCatalog.DataContracts/"]
          RUN dotnet restore "AAStore.ProductCatalog.Api/AAStore.ProductCatalog.Api.csproj"

          COPY . .
          WORKDIR "/src/AAStore.ProductCatalog.Api"
          RUN dotnet build "AAStore.ProductCatalog.Api.csproj" -c Release -o /app/build

          FROM build AS publish
          RUN dotnet publish "AAStore.ProductCatalog.Api.csproj" -c Release -o /app/publish

          FROM base AS final
          WORKDIR /app
          COPY --from=publish /app/publish .
          ENTRYPOINT ["dotnet", "AAStore.ProductCatalog.Api.dll"]

          構(gòu)建鏡像

          docker build -t aastore.productcatalog.api:dev -f F:/codelab/AAStore/AAStore.ProductCatalog.Api/Dockerfile .

          鏡像構(gòu)建成功了,可以使用docker image ls查看鏡像

          運(yùn)行容器

          docker run --name aastore.productcatalog.api.service.001 --restart=always -d -p 8081:8081 aastore.productcatalog.api:dev

          最后輸入url:http://localhost:8081/api/product/get,查看部署的是否成功?圖:

          參考:

          https://docs.docker.com/engine/reference/commandline/image/

          https://docs.microsoft.com/zh-cn/visualstudio/containers/container-build?view=vs-2019(Visual?Studio 如何構(gòu)建容器化應(yīng)用)


          瀏覽 59
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月天草逼网址 | 无码免费在线观看高清 | 一区二区三区四区无码精品 | 国产美女裸体免费看 | 色鬼综合 |