'gitlab/gitlab-runner-helper' docker 图片有什么用?
What is 'gitlab/gitlab-runner-helper' docker image used for?
我的总体目标是安装一个自托管 gitlab-runner,限制使用我自己准备的docker图像docker 仅限注册表.
为此,我有一个 system.d 配置,如下所示:
/etc/systemd/system/docker.service.d/allow-private-registry-only.conf
BLOCK_REGISTRY='--block-registry=all'
ADD_REGISTRY='--add-registry=my.private.registry:8080'
这样,docker pull
只能从 my.private.registry/
中提取图像。
在我设法让它工作之后,我想清理我的本地注册表并删除旧的 docker images
。正是在那个过程中,我偶然发现了一个名为 gitlab/gitlab-runner-helper
的 docker 图像,它可能是 gitlab-runner 本身使用的某个组件,并且可能是从 docker.io
.[= 中提取的。 22=]
现在我想知道在使用 gitlab-runner 时是否甚至 possible/advisable 阻止来自 docker.io
的图像?
如有任何提示,我们将不胜感激!
gitlab-runner-helper
图片由 GitLab Runner to handle Git, artifacts, and cache operations 用于 docker
、docker+machine
或 kubernetes
执行程序。
由于您更喜欢从私有注册表中拉取映像,因此可以 override the helper image。您的配置可以是:
[[runners]]
(...)
executor = "docker"
[runners.docker]
(...)
helper_image = "my.private.registry:8080/gitlab/gitlab-runner-helper:tag"
请确保图像存在于您的注册表中或您的配置启用代理 docker hub 或 registry.gitlab.com
。最后,您需要 运行 至少 Gitlab 运行ner 版本 13.7 并启用 FF_GITLAB_REGISTRY_HELPER_IMAGE
功能标志。
我觉得我有责任扩展已接受的答案(顺便说一句,这很棒),因为 'handle' 这个词基本上告诉我们的不多,它太抽象的。让我更详细地解释整个流程:
当构建即将开始时,gitlab-runner 会创建一个 docker 卷(您可以使用 docker 观察它如果需要,音量 ls)。此卷将用作您在构建期间使用的缓存和工件的存储。
第二件事——你将在每个阶段至少涉及 2 个容器:gitlab-runner-helper,容器和从你指定的图像创建的容器(在 . gitlab-ci.yml 或 config.toml)。 gitlab-runner-helper 容器做了什么,本质上,只是克隆上述 [=51= 中的远程 git 存储库(您正在构建) ] 卷以及缓存和工件。
它可以做到这一点,因为 gitlab-runner-helper 图像本身有 2 个重要的实用程序:git(显然 - 克隆 repo ) 和 gitlab-runner-helper 二进制文件(此实用程序可以拉取和推送工件、缓存)
- gitlab-runner-helper 容器在每个阶段之前启动几秒钟,以提取工件和缓存,然后终止。之后,将启动根据您指定的图像创建的容器,并且它还将附加此卷(来自步骤 1)- 这就是它接收工件的方式 btw。
@Nicolas 很好地描述了从 gitlab-runner-helper 中提取注册表的其余详细信息。我附加此评论只是为了某人,也许他想知道这个偷偷摸摸的“handle”这个词的确切含义。
希望对你有所帮助,祝你有个愉快的一天,我的朋友!
我的总体目标是安装一个自托管 gitlab-runner,限制使用我自己准备的docker图像docker 仅限注册表.
为此,我有一个 system.d 配置,如下所示:
/etc/systemd/system/docker.service.d/allow-private-registry-only.conf
BLOCK_REGISTRY='--block-registry=all'
ADD_REGISTRY='--add-registry=my.private.registry:8080'
这样,docker pull
只能从 my.private.registry/
中提取图像。
在我设法让它工作之后,我想清理我的本地注册表并删除旧的 docker images
。正是在那个过程中,我偶然发现了一个名为 gitlab/gitlab-runner-helper
的 docker 图像,它可能是 gitlab-runner 本身使用的某个组件,并且可能是从 docker.io
.[= 中提取的。 22=]
现在我想知道在使用 gitlab-runner 时是否甚至 possible/advisable 阻止来自 docker.io
的图像?
如有任何提示,我们将不胜感激!
gitlab-runner-helper
图片由 GitLab Runner to handle Git, artifacts, and cache operations 用于 docker
、docker+machine
或 kubernetes
执行程序。
由于您更喜欢从私有注册表中拉取映像,因此可以 override the helper image。您的配置可以是:
[[runners]]
(...)
executor = "docker"
[runners.docker]
(...)
helper_image = "my.private.registry:8080/gitlab/gitlab-runner-helper:tag"
请确保图像存在于您的注册表中或您的配置启用代理 docker hub 或 registry.gitlab.com
。最后,您需要 运行 至少 Gitlab 运行ner 版本 13.7 并启用 FF_GITLAB_REGISTRY_HELPER_IMAGE
功能标志。
我觉得我有责任扩展已接受的答案(顺便说一句,这很棒),因为 'handle' 这个词基本上告诉我们的不多,它太抽象的。让我更详细地解释整个流程:
当构建即将开始时,gitlab-runner 会创建一个 docker 卷(您可以使用 docker 观察它如果需要,音量 ls)。此卷将用作您在构建期间使用的缓存和工件的存储。
第二件事——你将在每个阶段至少涉及 2 个容器:gitlab-runner-helper,容器和从你指定的图像创建的容器(在 . gitlab-ci.yml 或 config.toml)。 gitlab-runner-helper 容器做了什么,本质上,只是克隆上述 [=51= 中的远程 git 存储库(您正在构建) ] 卷以及缓存和工件。
它可以做到这一点,因为 gitlab-runner-helper 图像本身有 2 个重要的实用程序:git(显然 - 克隆 repo ) 和 gitlab-runner-helper 二进制文件(此实用程序可以拉取和推送工件、缓存)
- gitlab-runner-helper 容器在每个阶段之前启动几秒钟,以提取工件和缓存,然后终止。之后,将启动根据您指定的图像创建的容器,并且它还将附加此卷(来自步骤 1)- 这就是它接收工件的方式 btw。
@Nicolas 很好地描述了从 gitlab-runner-helper 中提取注册表的其余详细信息。我附加此评论只是为了某人,也许他想知道这个偷偷摸摸的“handle”这个词的确切含义。
希望对你有所帮助,祝你有个愉快的一天,我的朋友!