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

GitLab流水线中Docker无法使用本地镜像的问题求助

GitLab流水线中Docker无法使用本地镜像的问题求助

我最近在搭建带有Docker-in-Docker的GitLab流水线,已经通过Dockerfile构建了docker-c本地镜像,手动在命令行执行docker run -it docker-c sh完全正常,但放到GitLab流水线里运行时,它好像完全无视本地已有的这个镜像,一个劲往DockerHub上查找,最终拉取失败报错。

附上作业输出:

Running with gitlab-runner 17.3.1 (66269445)
on runner3 71qiPF29, system ID: s_2acc9531e625
Preparing the "docker" executor
00:07
Using Docker executor with image mcr.microsoft.com/powershell ...
Starting service docker-c:latest...
Pulling docker image docker-c:latest ...
WARNING: Failed to pull image with policy "always": Error response from daemon: pull access denied for docker-c, repository does not exist or may require 'docker login': denied: requested access to the resource is denied (manager.go:251:3s)
ERROR: Job failed: failed to pull image "docker-c:latest" with specified policies [always]: Error response ...

给你几个可行的解决思路:

  • 调整镜像拉取策略
    GitLab Runner默认拉取策略是always,不管本地有没有都会尝试从远程仓库拉取。你可以在.gitlab-ci.yml中给该服务镜像单独设置拉取策略为if-not-present,这样Runner会优先检查本地镜像,不存在时再去远程拉取:

    services:
      - name: docker-c:latest
        pull_policy: if-not-present
    

    若想全局修改,可编辑Runner的config.toml配置文件,找到对应Runner的pull_policy字段改为if-not-present,修改完成后重启Runner服务即可。

  • 确保Runner能访问本地镜像
    如果你使用的是Docker executor,需要注意Runner的Docker daemon和你本地构建镜像的Docker daemon是否为同一个。如果Runner运行在容器中,它默认使用自身的Docker daemon,无法识别主机上的本地镜像。这种情况下,你可以将主机的Docker socket挂载给Runner,在config.toml的[runners.docker]部分添加:

    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    

    这样Runner就会和主机共享Docker daemon,自然能找到你本地的docker-c镜像。

  • 推送到私有仓库(备选方案)
    要是上面两种方法都不适用,也可以将docker-c镜像推送到GitLab容器注册表或其他私有仓库,然后在流水线中配置好登录凭证,让Runner能够正常拉取。比如推送到GitLab容器注册表的步骤大致如下:

    docker tag docker-c:latest registry.gitlab.com/你的项目路径/docker-c:latest
    docker login registry.gitlab.com
    docker push registry.gitlab.com/你的项目路径/docker-c:latest
    

    之后在.gitlab-ci.yml中使用这个私有镜像地址即可,记得确保Runner拥有该仓库的访问权限。

备注:内容来源于stack exchange,提问作者Den

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:14:35