我的总体目标是安装一个自托管的 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的图像?
任何提示都值得赞赏!
我觉得我有责任扩展公认的答案(顺便说一句,这很好),因为“处理”这个词基本上并没有告诉我们太多,它太抽象了。让我更详细地解释一下整个流程:
> < 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
功能标志。