百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> docker:latest和docker:dind有什么区别
分享文章到:

docker:latest和docker:dind有什么区别

发布时间:10/01 来源:未知 浏览: 关键词:

背景:

在编写 CI 时通过声明镜像作为 job 的施行环境,每个 job 都在一个纯洁的容器中施行。

有时,我们需要一个 docker 容器环境来施行 docker build、docker push 等操纵。查看官方的 docker 镜像,我们发明存在两个主要的版本:docker:latest、docker:dind 和 docker:git。

(引荐教程:docker教程)

docker:dind

该镜像包括 Docker 客户端(命令行工具)和 Docker daemon。

通过 docker history docker:dind 命令我们发明 docker:dind 是在 docker:latest 根基上又安置了 Docker daemon,并且最后两个构建命令为:

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 参数,dockerd-entrypoint.sh 命令接收到该参数并不会启动 Docker daemon。想要准确启动容器里的 Docker daemon 并且进入容器需要分步停止:

$ docker run -d --name dind --privileged docker:dind # 启动容器
$ docker logs -f dind # 查看启动日志
$ docker exec -it dind sh # 进入容器

启动 docker:dind 容器时,参数 --privileged 必需加上,不然 Docker daemon 启动时会报错。

docker:latest

该镜像只包括 Docker 客户端,需要有 Docker daemon 支撑,可以使用 docker:dind 的,也可以挂载宿主机的 /var/run/docker.sock。

该镜像启动不需要 --privileged 参数。

通过 docker history docker:latest 命令发明 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 放入雷同网络,并且指定 dind 容器在该网络中的别号为 docker,由于 latest 容器中默许设定的 daemon host 就叫 docker。

别的需要留意 证书 问题,新版本 Docker 客户端与 Docker daemon 通讯需要 TLS 证书包管通讯平安,docker:dind 容器会生成证书到环境变量 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。

以上就是docker:latest和docker:dind有什么不同的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板