You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI使用本地Docker镜像设置pull_policy后拉取失败如何解决?

问题根因

  • 全局配置段的pull_policy不生效:该参数为Docker执行器的专属配置,必须放在对应Runner实例的[[runners]] → [runners.docker]配置块下才会被读取
  • 现有拉取策略顺序错误:["always", "if-not-present"]会优先强制从远端镜像仓库拉取镜像,拉取失败才会尝试使用本地镜像,自然会触发Docker Hub的拉取权限报错

修复步骤

  1. 编辑/etc/gitlab-runner/config.toml配置文件,调整配置结构:
    首先删除全局段的pull_policy = ["always", "if-not-present"]配置,找到你正在使用的Docker类型Runner对应的[[runners]]块,在其下的[runners.docker]配置中添加/修改拉取策略:
    concurrent = 10
    check_interval = 0
    
    [[runners]]
      name = "你的Docker Runner名称"
      url = "你的GitLab地址"
      token = "你的Runner令牌"
      executor = "docker"
      [runners.docker]
        # 调整拉取策略顺序,优先使用本地镜像,本地不存在才去远端拉取
        pull_policy = ["if-not-present", "always"]
        # 其余原有[runners.docker]下的配置保持不变
        image = "默认镜像"
        privileged = false
        # ...其他原有配置
    
  2. 保存配置后重启GitLab Runner服务生效:
    gitlab-runner restart
    
  3. 验证本地镜像存在:执行docker images确认vnijs/rsm-mgta453镜像确实存储在GitLab Runner所在服务器的本地Docker镜像列表中,镜像名称和标签和CI配置中使用的完全一致。

可选进阶配置

如果只允许使用本地镜像、禁止所有远端拉取操作,可以直接将pull_policy设置为["never"],此时Runner会完全跳过镜像拉取步骤,直接使用本地镜像,不存在就直接报错。

内容的提问来源于stack exchange,提问作者Vincent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:27:03