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

TeamCity中docker buildx无法推送镜像至私有仓库(docker build正常)

Docker Buildx构建镜像成功但无法推送到私有仓库排查方案

问题背景

在TeamCity中使用docker buildx构建多平台镜像,构建日志显示成功,但私有仓库中找不到对应镜像;使用常规docker build命令则可以正常完成推送。此前该流程曾正常运行,当前无法复现。

环境信息

  • 服务器架构:ARM64
  • Docker版本:
$ docker version

Client: Docker Engine - Community
 Version:           24.0.9
 API version:       1.43
 Go version:        go1.20.13
 Git commit:        2936816
 Built:             Thu Feb  1 00:49:14 2024
 OS/Arch:           linux/arm64
 Context:           default
  • Docker Buildx版本:
$ docker buildx version
github.com/docker/buildx v0.13.1 7884339

当前操作脚本

Buildx构建脚本(无报错但推送失败)

name=container-builder
docker buildx ls | grep -q $name && docker buildx rm $name
docker buildx create --driver-opt network=host --use --name $name
docker buildx build -t registry.mydomain.com/myimage:latest --push --platform linux/amd64,linux/arm64 .

已尝试的优化脚本

docker buildx create --driver-opt network=host --use --name $name --platform linux/arm64,linux/amd64

可正常推送的常规命令

docker build -t registry.mydomain.com/myimage:latest --push .

排查思路

  1. 查看Buildx完整构建日志
    添加--progress=plain参数获取详细日志,确认镜像推送步骤是否实际执行,排查隐性警告或错误:

    docker buildx build --progress=plain -t registry.mydomain.com/myimage:latest --push --platform linux/amd64,linux/arm64 .
    
  2. 验证Buildx Builder网络连通性

    • 检查builder网络配置:执行docker buildx inspect container-builder,确认DriverOpts中包含network=host
    • 在builder容器内测试仓库连通性:
      # 容器名通常为buildx_buildkit_container-builder0
      docker exec -it buildx_buildkit_container-builder0 ping registry.mydomain.com
      docker exec -it buildx_buildkit_container-builder0 curl -I https://registry.mydomain.com/v2/
      
      若连通失败,需检查服务器防火墙、DNS配置,或尝试改用--driver-opt network=bridge并验证bridge网络访问权限。
  3. 检查私有仓库多平台镜像支持
    部分私有仓库默认不支持OCI多平台镜像清单,使用skopeo验证推送结果:

    skopeo inspect docker://registry.mydomain.com/myimage:latest --raw
    

    若返回错误,需升级仓库或调整配置以支持application/vnd.docker.distribution.manifest.list.v2+json类型清单。

  4. 确保Buildx共享Docker认证信息
    Buildx容器可能无法直接读取主机的Docker认证,创建builder时挂载主机配置目录:

    docker buildx create --driver-opt network=host --use --name $name \
      --mount type=bind,source=$HOME/.docker,target=/root/.docker
    
  5. 调整Buildx版本
    当前v0.13.1可能存在已知推送bug,尝试升级或降级版本:

    # 升级到最新稳定版
    docker buildx install
    
  6. 检查TeamCity执行环境

    • 确认TeamCity Agent用户权限与本地测试一致,可正常访问Docker守护进程
    • 排查是否有环境变量(如DOCKER_CONFIG)覆盖了Docker配置路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:02:04