需求背景
而在 CI/CD 中,我们常用一些 CI/CD 服务器,比如 Jenkins 和 GoCD 来构建与部署我们的应用,从而实现 CI/CD 自动化。现在一些 CI/CD 服务器也被 Docker 化运行在真实的物理机上。于是我们需在 CI/CD 服务器的 Docker container 里面来 build 与 run 我们的 Docker 镜像,这就涉及到 Docker in Docker 问题。
一个很自然的想法:我们是不是需要在 CI/CD 服务器镜像中安装一个 Docker Daemon 和 Docker 命令?但是 Docker 里面跑 Docker 总感觉有些蹩脚,额外安装与运行 Docker 无疑增加了 CI/CD 服务器镜像的大小,同时还增加了 Docker 的深度。
实现思路
实际上我们并不需要在 CI/CD 服务器上安装 Docker。通过上面的命令在 CI/CD 服务器上运行我们的镜像:
1 | docker run -v /var/run/docker.sock:/var/run/docker.sock |
Docker 采取的是 C/S 架构,Docker 的成功运行需要 Docker Daemon 和 Docker Client 的支持,当我们运行一些 docker build 等命令时,实际需要 Docker Client 连接 Docker Daemon 发送命令,Docker Daemon 会在宿主机操作系统分配文件、网络资源:
本文链接:https://my.lmcjl.com/post/18373.html
展开阅读全文
4 评论