【问题标题】:Gitlab runner pulls image for every jobGitlab runner 为每项工作拉取图像
【发布时间】:2020-11-12 13:22:29
【问题描述】:

我有一个gitlab 跑步者使用docker 作为执行者。我的问题是,它会提取我为每个作业定义的图像,这需要更多时间来完成管道

如何缓存图像并为jobrunner 添加拉动policy?请问有人吗?

【问题讨论】:

    标签: gitlab dock


    【解决方案1】:

    [[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

    【讨论】:

    • 而且,令人惊讶的是,您无需循环服务即可使更改生效!
    【解决方案2】:

    检查最新的GitLab 13.8(2021 年 1 月)是否有帮助。

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

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

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

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

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

    参见DocumentationIssue

    【讨论】:

      【解决方案3】:

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

      阅读选项here 的文档以及政策如何运作here

      【讨论】:

      • 感谢 .gitlab-ci.yml 中的语法应该如何?
      • pull_policy : if-not-present ,文档告诉在 yaml 中放置它的位置
      • 老实说,我找不到在 yaml 中放置 pull_policy 的位置。他们没有提到在哪里。刚刚说了imageservice,但不知道怎么正确表达
      • 在你的配置中使用它,比如 [runners.docker] pull_policy = "if-not-present" 。你可以在这里查看如何使用gitlab.com/gitlab-org/gitlab-runner/-/issues/1905(只是如何使用我指的是这个链接)
      • 对于我的 docker 设置,有一个桃子馅饼位于:/var/lib/docker/volumes/gitlab-runner-config/_data/ 更新[runners.docker] 部分
      猜你喜欢
      • 2018-08-02
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多