日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三分钟Docker-镜像、容器实战篇

發(fā)布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三分钟Docker-镜像、容器实战篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主要內容:

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

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

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

  • 1.鏡像、容器命令

    鏡像
    序號命令描述
    1docker image build基于Dockerfile創(chuàng)建鏡像
    2docker image history顯示鏡像的歷史記錄,主要因為鏡像文件由多個層組成,那么可以使用該命令知道各個層的內容具體是什么。
    3docker image importImport the contents from a tarball to create a filesystem image
    4docker image inspect顯示鏡像的詳細信息
    5docker image load載入鏡像,可以使用該命令將導出的tar文件再導入本地鏡像庫
    6docker image ls列出本地主機上安裝的所有鏡像
    7docker image prune清理一些臨時的鏡像文件,未被使用的。
    8docker image pull從registry中拉取鏡像或存儲庫(repository),可以指定Tag(一般用來標識版本信息),默認會選擇latest標簽,下載最新版本的鏡像。
    9docker image push將鏡像或存儲庫推送到注冊表(registry)
    10docker image rm刪除一個或多個鏡像
    11docker image save存取鏡像,如果要導出鏡像到本地文件,可以使用該命令
    12docker image tag為本地鏡像添加新的標簽。
    容器
    序號命令描述
    01docker container attach進入容器
    02docker container commitCreate a new image from a container’s changes
    03docker container cp在容器和主機之間復制文件
    04docker container create創(chuàng)建容器,狀態(tài)是停止的,需要使用start命令
    05docker container diff查看容器內文件系統(tǒng)的變更
    06docker container exec可以在運行中容器內執(zhí)行命令
    07docker container export導出容器,文件類型后綴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刪除一個或多個容器
    19docker container run運行一個容器,等同于先create、在start命令
    20docker container start啟動容器
    20docker container stats查看統(tǒng)計資源信息(cpu,內存,存儲,網(wǎng)絡等使用情況)
    21docker container stop終止容器
    22docker container top查看容器內進程
    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
    運行consul容器并且添加服務節(jié)點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'

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

    查看consul_server_1容器的ip地址,再添加2個服務節(jié)點,組成集群
    docker inspect --format='{{.NetworkSettings.IPAddress}}' consul_server_1
    添加consul_node_2節(jié)點
    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é)點
    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個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é)點是不參與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的模式運行, server是服務發(fā)現(xiàn)模塊的核心, client主要用于轉發(fā)請求

    • -advertise 將本機私有IP傳遞到consul

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

    • -client 指定consul綁定在哪個client地址上,這個地址可提供HTTP、DNS、RPC等服務,默認是>127.0.0.1

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

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

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

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

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

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

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

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

    • -ui 開啟ui界面

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

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

    生成Dockerfile文件

    本示例使用前幾天分享的項目把AAStore.ProductCatalog.Api,選中項目右鍵->添加->Docker支持,就會看到生產的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 18081FROM 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/buildFROM build AS publish RUN dotnet publish "AAStore.ProductCatalog.Api.csproj" -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "AAStore.ProductCatalog.Api.dll"]

    構建鏡像

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

    鏡像構建成功了,可以使用docker image ls查看鏡像

    運行容器

    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 如何構建容器化應用)

    總結

    以上是生活随笔為你收集整理的三分钟Docker-镜像、容器实战篇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。