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

问题描述 投票:0回答:2

我的总体目标是安装一个自托管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
 中提取的。

现在我想知道在使用

gitlab-runner

 时是否可能/建议阻止来自 
docker.io 的图像?

任何提示表示赞赏!

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

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

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

    它可以做到这一点,因为 gitlab-runner-helper 镜像本身有 2 个重要的实用程序:
  4. git
(显然 - 克隆存储库)和

gitlab-runner-helper 二进制文件(该实用程序可以拉取和推送工件、缓存)

gitlab-runner-helper
    容器在每个阶段之前启动几秒钟,以提取工件和缓存,然后终止。之后,将启动从您指定的映像创建的容器,并且它还将附加此卷(来自步骤 1) - 这就是它接收工件的方式。
  1. @Nicolas 很好地描述了有关从中提取
  2. gitlab-runner-helper
的注册表的其余详细信息。我附加此评论只是为了某人,也许他想知道这个偷偷摸摸的“

handle”一词到底意味着什么。 希望它有帮助,祝你有美好的一天,我的朋友!


27
投票
图像由 GitLab Runner

用于处理

docker
docker+machine
kubernetes
执行器的 Git、工件和缓存操作。
由于您更喜欢从私有注册表中提取映像,因此您可以
覆盖辅助映像
。您的配置可能是:

[[runners]] (...) executor = "docker" [runners.docker] (...) helper_image = "my.private.registry:8080/gitlab/gitlab-runner-helper:tag" 请确保镜像存在于您的注册表中,或者您的配置启用代理

docker hub
registry.gitlab.com

。对于最后一个,您需要至少运行 Gitlab runner 版本 13.7 并启用 FF_GITLAB_REGISTRY_HELPER_IMAGE 功能标志。

    

© www.soinside.com 2019 - 2024. All rights reserved.