docker-in-docker(dind)服务在gitlab ci中的作用
根据官方的gitlab文档 ,在ci
pipe道中启用docker docker build
一种方法是使用dind
服务(就gitlab-ci
服务而言 )。
但是,由于在docker执行程序上运行的ci作业始终是这种情况,因此docker:latest
也需要docker:latest
映像。
有人可以解释:
-
docker:dind
和docker:latest
之间有什么区别docker:latest
图像? - (最重要的): 为什么服务和docker镜像都需要(例如,如本示例中所示 ,链接到github文档中)来执行例如
docker build
工作,而在ci工作中? 不是docker:latest
图像( 在这个工作将在其中执行 !)包含docker守护进程(我认为docker-compose
也),这是我们需要的命令(例如docker build
,docker push
等等)?
除非我错了,否则这个问题或多或less会变成:
为什么docker客户端和docker守护进程不能驻留在同一个docker(enabled)容器中
该容器将只包含在泊坞窗图像中定义的东西。 你知道你可以从基本映像开始安装任何东西。 但是,您也可以将Docker(deamon和client)安装在容器中,也就是Docker IN Docker(dind)。 所以容器将能够运行其他容器。 这就是为什么gitlab需要这个。