GitLab Runner流水线报错:moby/buildkit:buildx-stable-1镜像清单未找到
解决GitLab Runner流水线中Buildkit镜像找不到的问题
原因分析
你的Docker版本18.03.1-ce过于老旧,GitLab Runner v15.8.1默认使用的moby/buildkit:buildx-stable-1镜像,其镜像清单(manifest)不兼容老版本Docker的镜像拉取逻辑,导致无法找到对应镜像。另外,旧版Docker对Buildx的支持有限,也会引发这类兼容性问题。
解决方案
方案1:指定兼容旧Docker的Buildkit镜像标签
修改GitLab CI配置文件(.gitlab-ci.yml),在使用docker buildx的阶段,指定一个兼容Docker 18.03的Buildkit镜像,比如moby/buildkit:v0.10.6:
build: stage: build variables: DOCKER_BUILDKIT_IMAGE: moby/buildkit:v0.10.6 script: - docker buildx build --push -t your-image:tag .
若为Runner配置层面的问题,修改GitLab Runner的config.toml文件,在[runners.docker]节点下添加或修改:
[runners.docker] buildkit_image = "moby/buildkit:v0.10.6"
修改后重启GitLab Runner容器:
docker restart gitlab-runner
方案2:升级Docker版本(推荐)
Docker 18.03已停止维护,存在安全漏洞和兼容性问题,建议升级到支持Buildx的稳定版本(如20.10.x系列):
- 停止并移除旧Docker相关组件(以CentOS为例):
systemctl stop docker yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 安装新版Docker:
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io systemctl start docker systemctl enable docker
- 重启GitLab Runner容器:
docker restart gitlab-runner
方案3:禁用Buildkit,使用传统Docker构建
若暂时无法升级或修改镜像标签,可在CI配置中禁用Buildkit,改用传统Docker构建方式:
在.gitlab-ci.yml的构建阶段添加环境变量DOCKER_BUILDKIT=0:
build: stage: build variables: DOCKER_BUILDKIT: 0 script: - docker build -t your-image:tag . - docker push your-image:tag
内容的提问来源于stack exchange,提问作者eddy
相关产品推荐
相关产品推荐

