使用 gitlab-ci.yml 的 Docker 内部的 Docker
Posted
技术标签:
【中文标题】使用 gitlab-ci.yml 的 Docker 内部的 Docker【英文标题】:Docker inside docker with gitlab-ci.yml 【发布时间】:2018-11-29 11:39:13 【问题描述】:我已经创建了一个 gitlab 运行器。
我选择了 docker executor 和一个 ubuntu 默认镜像。
我把它放在我的 .gitlab-ci.yml 文件的顶部:
image: microsoft/dotnet:latest
我在想如果 .gitlab-ci.yml 文件中没有“images”指令,gitlab-ci 会默认加载 ubuntu 图像。
但是,有一点奇怪:我现在想知道 gitlab-ci 是不是创建了一个 ubuntu 容器,然后在 ubuntu 容器中创建了一个 dotnet 容器。
这是我在 gitlab 服务器上完成的一个非常丑陋的测试:我删除了 /usr/bin/docker 文件,并用一个记录参数的脚本替换了它。
这很奇怪,因为作业仍在工作,而我的日志文件中没有任何内容....
谢谢
【问题讨论】:
【参考方案1】:如果您没有指定映像,但确实使用了 Ubuntu 映像,并且您的作业应该在 dotnet 容器上运行,而无需启动 ubuntu。
您的测试的行为方式与它的行为方式相同,因为 docker
是客户端,而 dockerd
是 gitlab runner 实际调用的守护进程。
如果您想检查发生了什么,您应该致电docker ps
来获取正在运行的容器列表。
【讨论】:
以上是关于使用 gitlab-ci.yml 的 Docker 内部的 Docker的主要内容,如果未能解决你的问题,请参考以下文章
在 .gitlab-ci.yml 中运行 docker-compose build
如何将存储库中的文件复制到用于作业的 Docker 容器中,在 gitlab-ci.yml
使用“:”的脚本命令导致 .gitlab-ci.yml 执行错误