GitLab集成Trivy容器扫描作业镜像拉取失败如何排查解决?
Trivy集成GitLab流水线报错排查
错误1:docker:stable-git镜像拉取失败
问题原因
Docker官方早已废弃并移除了stable-git标签的镜像,Kubernetes执行器无法从镜像仓库拉取到不存在的标签,多次重试失败后触发退避机制,最终作业执行失败。
解决方案
- 将作业配置中的
image: docker:stable-git替换为当前仍在维护的有效镜像标签,比如docker:24-git或者docker:latest-git - 如果你的Kubernetes集群限制公网镜像拉取,可提前将需要的镜像同步到私有镜像仓库,再填写私有镜像的完整访问路径
错误2:镜像引用格式无效 /devops/docker-alpine-sdk:19.03.15
问题原因
$CI_REGISTRY预定义变量未正确赋值为空,导致拼接镜像地址后出现开头带斜杠的非法格式。该问题在切换到共享Runner后触发,是因为共享Runner没有默认继承私有Runner的仓库地址配置,或者你项目的CI/CD变量没有对共享Runner开放权限。
解决方案
- 进入项目CI/CD变量设置页,确认
CI_REGISTRY已正确配置为你的私有镜像仓库地址,且开启了「对所有Runner可用」的选项 - 如果使用的是公共镜像无需走私有仓库拉取,直接写死完整的镜像地址,不要拼接
$CI_REGISTRY变量 - 也可以在当前作业的
variables块中显式给CI_REGISTRY赋值,避免变量为空
额外优化建议
- 你当前使用的Trivy v0.20.0版本过于老旧,建议升级到最新稳定版,避免漏洞库同步失败、扫描规则过时的问题
- 可以直接使用官方维护的Trivy镜像作为作业镜像,无需在作业中手动安装curl、docker-cli和Trivy二进制,大幅缩短作业执行时间
- 检查共享Runner所在Kubernetes集群的镜像拉取权限,确认集群可以访问你用到的公网镜像/私有镜像仓库,必要时配置镜像拉取Secret
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

