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

GitLab CI执行时出现of:latest镜像拉取失败问题求助

解决GitLab CI中Docker Run出现"of:latest"镜像找不到的问题

我曾遇到过类似的诡异场景——本地执行完全正常,但GitLab CI环境里命令就被错误解析,导致Docker去拉取不存在的of:latest镜像。下面是几个排查和解决的方向:

1. 先确认实际执行的命令是什么

首先在test阶段的脚本里添加一行打印,输出变量展开后的完整Docker命令,这样能直观看到命令是否被篡改:

test:
  stage: test
  variables:
    DB_DATABASE: test
    DB_USERNAME: postgres
    DB_PASSWORD: postgres
    DB_URL: postgres
  script:
    - echo $TEMP_IMAGE
    - docker pull $TEMP_IMAGE
    - docker pull postgres:9.5-alpine
    # 新增这行,查看实际要执行的命令
    - echo "实际执行命令: docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine"
    - docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine
    - docker run --link postgres $TEMP_IMAGE ecto.create ecto.migrate test

重新运行CI管道,查看这行echo的输出,如果postgres:9.5-alpine被替换成了of或其他奇怪内容,那说明是变量替换出了问题。

2. 检查GitLab项目的CI/CD全局变量

GitLab的项目级/组级CI变量可能会意外替换命令中的字符串。请前往项目Settings > CI/CD > Variables,检查是否存在名称包含postgres、值为of的变量——尤其是开启了Expand variable reference的变量,可能会导致命令中的普通字符串被错误替换。

3. 用单引号包裹镜像名避免意外替换

把镜像名用单引号括起来,强制Shell不解析其中的内容,避免被变量替换干扰:

- docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d 'postgres:9.5-alpine'

4. 指定用Bash执行脚本

GitLab CI默认用sh执行脚本,某些场景下sh的变量解析逻辑和bash有差异。你可以显式用Bash来执行Docker命令:

- bash -c "docker run --name postgres -e POSTGRES_DB=$DB_DATABASE -e POSTGRES_USER=$DB_USERNAME -e POSTGRES_PASSWORD=$DB_PASSWORD -d postgres:9.5-alpine"

5. 更换Docker DinD的版本

你当前使用的docker:latest和docker:dind可能存在版本兼容性问题,尝试指定具体的稳定版本:

image: docker:24.0.6
services:
  - docker:24.0.6-dind

6. 检查Runner的Privileged配置

确保GitLab Runner的配置中开启了privileged: true(Docker DinD必须运行在特权模式下)。虽然你本地执行时加了--docker-privileged参数正常,但GitLab上的Runner可能未开启该配置。

我之前遇到的情况是项目里误设置了一个名为postgres的变量,值为of,导致命令中的镜像名被替换成of,Docker默认拉取latest标签才出现这个错误。按照上面的步骤排查,应该能快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:12:18