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

jsc*_*sse 10 gitlab docker gitlab-ci gitlab-ci-runner

我的总体目标是安装一个自托管的 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'
Run Code Online (Sandbox Code Playgroud)

这样,docker pull就只允许从中提取图像my.private.registry/

在我设法使其工作后,我想清理我的本地注册表并删除旧的docker images. 正是在这个过程中,我偶然发现了一个名为 docker 镜像,该镜像可能是gitlab-runnergitlab/gitlab-runner-helper本身使用的某个组件,并且可能是从.docker.io

docker.io现在我想知道使用gitlab-runner时是否可能/建议阻止图像?

任何提示表示赞赏!

Mik*_*048 26

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

  1. 当构建即将开始时,gitlab-runner会创建一个docker卷(如果需要,您可以使用dockervolumels观察它)。该卷将作为您在构建期间使用的缓存和工件的存储。

  2. 第二件事 - 每个阶段至少涉及 2 个容器:gitlab-runner-helper、容器以及从您指定的映像(在 .gitlab-ci.yml 或 config.toml 中)创建的容器。gitlab-runner-helper容器的作用本质上只是在上述 docker 卷中克隆远程 git 存储库(您正在构建的)以及缓存和工件。

它可以做到这一点,因为 gitlab-runner-helper 图像本身有 2 个重要的实用程序:git(显然 - 克隆存储库)和gitlab-runner-helper二进制文件(该实用程序可以拉取和推送工件、缓存)

  1. gitlab -runner-helper容器在每个阶段之前启动几秒钟,以提取工件和缓存,然后终止。之后,将启动从您指定的映像创建的容器,并且它还将附加此卷(来自步骤 1) - 这就是它接收工件的方式。

@Nicolas 很好地描述了有关从中提取gitlab-runner-helper 的注册表的其余详细信息。我附加此评论只是为了某人,也许他想知道这个偷偷摸摸的“处理”一词的确切含义。

希望它有帮助,祝你有美好的一天,我的朋友!


Nic*_*ter 19

gitlab-runner-helper镜像由 GitLab Runner 使用来处理 、或执行器的Git docker、工件和缓存操作。docker+machinekubernetes

由于您更喜欢从私有注册表中提取映像,因此您可以覆盖辅助映像。您的配置可能是:

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

请确保该映像存在于您的注册表中,或者您的配置启用了代理docker hubregistry.gitlab.com. 最后,您需要至少运行 Gitlab runner 版本 13.7 并启用FF_GITLAB_REGISTRY_HELPER_IMAGE功能标志。