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

Docker 23版本build无法拉取需客户端证书的私有镜像问题求助

Docker 23+ Buildkit无法拉取需双向认证(客户端证书+账号密码)的私有镜像仓库

问题核心

Docker升级到23版本后,Buildkit成为默认构建引擎,执行docker build拉取需要客户端证书+账号密码双向认证的私有镜像时,报错403 Forbidden,但docker login和docker pull正常,本地有镜像时build也能正常运行。

解决方案

1. 完善Buildkit配置,同时加载证书与Docker登录凭证

修改~/.config/buildkit/buildkitd.toml,添加config_path指定Docker配置目录,让Buildkit同时读取客户端证书和账号密码认证信息:

debug = true
[registry]
  [registry."myregistry.com"]
    ca = ["/path/to/certs/ca.pem"]
    config_path = "/home/your-username/.docker"  # 替换为你的实际Docker配置路径,通常是~/.docker
    [[registry."myregistry.com".keypair]]
      key = "/path/to/certs/client.key"
      cert = "/path/to/certs/client.pem"

2. 重启构建器使配置生效

删除旧构建器并重新创建:

docker buildx rm new-builder
docker buildx create --bootstrap --use --config ~/.config/buildkit/buildkitd.toml --name new-builder

如果你的Docker Buildkit是通过systemd管理的,也可以直接重启服务:

systemctl restart docker-buildkit.service

3. 验证构建

执行docker build .,确认是否能正常拉取私有镜像并完成构建。

临时替代方案(不推荐长期使用)

如果需要快速恢复构建,可临时禁用Buildkit,回到旧引擎:

DOCKER_BUILDKIT=0 docker build .

原因分析

Docker 23+默认启用Buildkit后,Buildkit的认证逻辑与传统Docker引擎不同:

  • 传统引擎会自动合并客户端证书和~/.docker/config.json中的账号密码信息,完成双向认证;
  • Buildkit默认仅读取自身配置文件中的证书信息,不会自动加载Docker的登录凭证,导致拉取镜像时只提供了客户端证书,缺少账号密码,私有仓库因此返回403 Forbidden。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:33