GitLab 运行程序为每个作业拉取镜像

Jan*_*uka 20 gitlab docker

我有一个 GitLab 运行程序用作执行docker程序。我的问题是,它提取我为每个作业定义的图像,这需要更多时间来完成管道

在此输入图像描述

如何缓存图像并添加policyjob的拉取runner?请问有人吗?

Tar*_*sla 19

默认情况下,docker 执行器的拉取策略是“始终”。您可以使用“if-not-present”拉取策略来确保仅在本地不可用时才拉取它。

请阅读此处的选项文档以及此处的策略如何运作


Von*_*onC 15

检查最新的GitLab 13.8(2021 年 1 月)是否可以提供帮助。

\n
\n

为Docker执行器配置多个镜像拉取策略

\n

当您的 CI 作业从容器注册表检索容器映像时,网络连接丢失可能会导致数小时的开发时间损失,并对时间敏感的产品部署产生负面影响。

\n

为了解决这个弹性问题,GitLab Runner Docker 执行器现在支持使用多个值进行配置pull_policy,这些值在 GitLab Runner 文件中定义config.toml

\n

您可以使用这些值或堆叠映像拉取策略来配置拉取策略组合并减轻连接丢失造成的影响。

\n

例如,如果配置pull_policy =[always, if-not-present],拉取策略将always拉取镜像。
\n但是,如果目标容器注册表不可用,GitLab Runner Docker 执行程序将回退并使用该if-not-present策略,这意味着该映像的本地副本将用于该管道作业。

\n

https://about.gitlab.com/images/13_8/runner-docker-pull-policy.png -- 为 Docker 执行器配置多个镜像拉取策略

\n

请参阅文档问题

\n
\n
\n

GitLab 15.2(2022 年 7 月)添加了:

\n
\n

在管道配置中设置镜像拉取策略

\n

您可以为 GitLab Runner 如何在 CI/CD 作业中下载 Docker 镜像选择不同的拉取策略。

\n
    \n
  • always(默认行为)确保图像始终被下载,
  • \n
  • if-not-present仅当本地版本不存在时才下载镜像,并且
  • \n
  • never仅使用本地版本(从不下载图像)。
  • \n
\n

以前,您只能在运行程序级别定义拉取策略。在此版本中,我们\xe2\x80\x99添加了在管道级别定义拉取策略的功能。用于pull_policy.gitlab-ci.yml作业或管道级别定义不同的拉取策略。共享运行器不支持此功能。

\n

https://about.gitlab.com/images/15_2/pull_policy.png -- 在管道配置中设置镜像拉取策略

\n

请参阅文档问题

\n
\n


小智 5

添加[[runners]] [runners.docker] pull_policy = "if-not-present"到 config.toml。

如何工作:https ://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work

config.toml:https://docs.gitlab.com/runner/configuration/advanced-configuration.html