站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        docker:latest和docker:dind有什么區(qū)別

        docker:latest和docker:dind有什么區(qū)別

        背景:

        在編寫 CI 時通過聲明鏡像作為 job 的執(zhí)行環(huán)境,每個 job 都在一個純凈的容器中執(zhí)行。

        有時,我們需要一個 docker 容器環(huán)境來執(zhí)行 docker build、docker push 等操作。查看官方的 docker 鏡像,我們發(fā)現(xiàn)存在兩個主要的版本:docker:latest、docker:dind 和 docker:git。

        (推薦教程:docker教程)

        docker:dind

        該鏡像包含 Docker 客戶端(命令行工具)和 Docker daemon。

        通過 docker history docker:dind 命令我們發(fā)現(xiàn) docker:dind 是在 docker:latest 基礎(chǔ)上又安裝了 Docker daemon,并且最后兩個構(gòu)建命令為:

        IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT 66dc2d45749a        8 weeks ago         /bin/sh -c #(nop)  CMD []                       0B                   <missing>           8 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["dockerd-entr…   0B                   ...

        在 run 該鏡像時,不能指定 sh CMD 參數(shù),dockerd-entrypoint.sh 命令接收到該參數(shù)并不會啟動 Docker daemon。想要正確啟動容器里的 Docker daemon 并且進入容器需要分步進行:

        $ docker run -d --name dind --privileged docker:dind # 啟動容器 $ docker logs -f dind # 查看啟動日志 $ docker exec -it dind sh # 進入容器

        啟動 docker:dind 容器時,參數(shù) –privileged 必須加上,否則 Docker daemon 啟動時會報錯。

        docker:latest

        該鏡像只包含 Docker 客戶端,需要有 Docker daemon 支持,可以使用 docker:dind 的,也可以掛載宿主機的 /var/run/docker.sock。

        該鏡像啟動不需要 –privileged 參數(shù)。

        通過 docker history docker:latest 命令發(fā)現(xiàn) CMD 默認為 sh:

        81f5749c9058        3 months ago        /bin/sh -c #(nop)  CMD ["sh"]                   0B                   <missing>           3 months ago        /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B                   ...

        啟動方式一:掛載宿主機 sock 文件

        $ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest

        啟動方式二:配合 docker:dind

        將 docker:dind 和 docker:latest 放入相同網(wǎng)絡(luò),并且指定 dind 容器在該網(wǎng)絡(luò)中的別名為 docker,因為 latest 容器中默認設(shè)定的 daemon host 就叫 docker。

        另外需要注意 證書 問題,新版本 Docker 客戶端與 Docker daemon 通訊需要 TLS 證書保證通訊安全,docker:dind 容器會生成證書到環(huán)境變量 DOCKER_TLS_CERTDIR 指定的目錄,需將證書掛載并提供給 docker:latest 容器使用。

        $ docker run --privileged --name some-docker -d      --network some-network --network-alias docker      -e DOCKER_TLS_CERTDIR=/certs      -v some-docker-certs-ca:/certs/ca      -v some-docker-certs-client:/certs/client      docker:dind $ docker run --rm --network some-network      -e DOCKER_TLS_CERTDIR=/certs      -v some-docker-certs-client:/certs/client:ro      docker:latest

        docker:git

        docker:git 是包含了 git 命令的 docker:latest,方便 CI 時使用 Git。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲精品欧美精品日韩精品 | 久久精品亚洲福利| 无码精品国产VA在线观看DVD | 亚洲国产精品一区二区第一页免| 久久97精品久久久久久久不卡| 中文字幕精品久久久久人妻| 精品无码国产污污污免费网站国产| 国产精品一级片| 精品久久久久久久无码| 亚洲国产精品无码久久98| 欧美日韩精品系列一区二区三区 | 国产精品二区观看| 久久九九青青国产精品| avtt天堂网久久精品| 久久精品aⅴ无码中文字字幕重口| 亚洲七七久久精品中文国产| 久久精品免费大片国产大片| 国产精品理论片在线观看| 久久精品国产半推半就| 国产精品白浆在线观看免费| 四虎影视永久在线观看精品| 伊人久久精品影院| 欧美亚洲日本久久精品| 久久久久久一区国产精品| 精品成人一区二区三区四区| 国产精品无打码在线播放| 777被窝午夜精品影院| 精品久久久久久中文字幕| 97国产精品视频| 国产精品va无码一区二区| 精品久久久久久久久午夜福利| 人妻少妇精品视频二区| 亚洲av永久无码精品漫画| 亚洲国产精品无码中文字| 亚洲国产精品VA在线看黑人| 亚洲Av永久无码精品三区在线| 无码日韩精品一区二区免费| 人人妻人人澡人人爽精品日本| 久久精品人人做人人爽电影蜜月| 国内精品人妻无码久久久影院| 国产人妖乱国产精品人妖|