lep*_*eil 7 service yaml image docker gitlab-ci
我不明白关键字image
和services
file.gitlab-ci.yml 中的机制。我们什么时候知道关键字的命令在哪个图像script
上执行?
当我阅读 gitlabci 文档时,我很好地理解了关键字“图像”和“服务”的理论,因此我已经进行了测试并设法httpd
通过 wget与服务进行交互,但是,实际上我无法理解图片是做什么用的?
让我解释 :)
首先,我创建了一个结构,其作业通过不声明任何图像来生成“uname -a”:
job_scriptWithDefaultImage:
stage: gitlabtest1
script:
- uname -a
Run Code Online (Sandbox Code Playgroud)
结果然后向我显示了在跑步者上运行的“uname -a”:
$ uname -a
Linux runner-b41b332f-project-9060-concurrent-0 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 Linux
Run Code Online (Sandbox Code Playgroud)
然后我只需在我的工作中添加一个图像,指定我想使用高山:
job_scriptWithAlpineImage:
internship: gitlabtest2
image: registry.hub.docker.com/library/alpine:latest
script:
- uname -a
Run Code Online (Sandbox Code Playgroud)
结果完全一样,uname 总是在跑步者身上运行,而不是我的 alpine ...
$ uname -a
Linux runner-9cade5e3-project-9060-concurrent-0 4.4.0-130-generic #156-Ubuntu SMP Thu Jun 14 08:53:28 UTC 2018 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
所以我完全不明白:
script
部分执行该图像中的命令?小智 1
Docker 使用主机的内核。正如您从输出中看到的uname -a
,它提供了跑步者的机器信息。这就是为什么无论容器如何,您都会得到相同的输出。您甚至可以在您的机器上尝试一下。
对于Gitlab Runner,你service
是独立的。它将附加并提供给您调用它的作业,就好像它在它旁边运行一样。
您的作业将使用您通过标签指定的图像image
来运行中列出的命令script
(您可以链接它们)。如果未指定图像,它将采用运行程序配置中定义的默认图像(可能是 Ubuntu)。