首页 > 解决方案 > '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 pull只允许从中提取图像my.private.registry/

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

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

任何提示表示赞赏!

标签: dockergitlabgitlab-cigitlab-ci-runner

解决方案


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

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

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

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

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

@Nicolas 很好地描述了gitlab-runner-helper从中提取的注册表的其余详细信息。我只是为某个人附加此评论,他们也许想知道这个鬼鬼祟祟的“句柄”词到底是什么意思。

希望对你有帮助,祝你有个愉快的一天,我的朋友!


推荐阅读