提问者:小点点

“gitlab/gitlab-runner-helper”docker 镜像的用途是什么?


我的总体目标是安装一个自托管的 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拉只允许从my. Private.注册表/拉取图像。

在我成功完成这项工作后,我想清理本地注册表并删除旧的docker图像。正是在这个过程中,我偶然发现了一个名为gitlab/gitlabrunner-helper的docker映像,它可能是gitlabrunner本身使用的某个组件,可能是从docker.io中提取的。

现在,我想知道在使用gitlab-runner时,是否有可能/建议阻止来自< code>docker.io的图像?

任何提示都值得赞赏!


共2个答案

匿名用户

我觉得我有责任扩展公认的答案(顺便说一句,这很好),因为“处理”这个词基本上并没有告诉我们太多,它太抽象了。让我更详细地解释一下整个流程:

> < li>

当构建即将开始时,gitlab-runner会创建一个docker卷(如果您愿意,可以使用docker卷ls来观察它)。这个卷将作为构建期间使用的缓存和工件的存储。

第二件事-每个阶段至少有两个容器:gitlabrunnerhelper、容器和从您指定的映像(在.gitlab-ci.yml或config.toml中)创建的容器。gitlabrunner helper容器做什么,本质上只是在前面提到的docker卷中克隆远程git存储库(您正在构建)以及缓存和工件。

它可以做到这一点,因为gitlab-runner-helper image本身有两个重要的实用程序:git(显然是为了克隆repo)和gitlab-runner-helper二进制文件(这个实用程序可以拉和推工件、缓存)

@Nicolas很好地描述了gitlabrunnerhelper从何处获取的注册表的其余细节。我附上这条评论只是为了某个人,也许他想知道这个狡猾的“处理”字到底是什么意思。

希望这有帮助,祝你今天愉快,我的朋友!

匿名用户

gitlab runner使用<code>gitlab runner helper</code>图像来处理<code>docker</code>、<code>docker machine</code}或<code>kubernetes</code〕执行器的Git、工件和缓存操作。

由于你更喜欢从专用注册表拉取映像,因此可以覆盖帮助程序映像。您的配置可能是:

[[runners]]
  (...)
  executor = "docker"
  [runners.docker]
    (...)
    helper_image = "my.private.registry:8080/gitlab/gitlab-runner-helper:tag"

请确保映像出现在您的注册表上,或者您的配置启用代理docker hub或registry.gitlab.com。最后,您需要至少运行Gitlab运行器版本13.7并启用FF_GITLAB_REGISTRY_HELPER_IMAGE功能标志。