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

如何让docker buildx的ADD指令信任自定义CA证书?

解决Docker Buildx ADD指令信任自定义CA证书的问题

问题背景

使用Docker Buildx从自定义CA签发证书的内部Artifactory服务器拉取镜像(FROM指令)时正常,但使用ADD指令下载该服务器上的制品时,触发x509: certificate signed by unknown authority错误。

核心原因

你配置的buildkit.toml中[registry."dockerhub.xxxx.internal"]下的ca选项,仅对**Docker镜像拉取(如FROM指令)**生效,用于验证镜像仓库的证书。而ADD指令发起的HTTP下载请求,由Buildkit进程直接处理,会使用Buildkit自身的全局CA信任池,因此需要单独配置全局CA信任。

解决方案

方法1:修改Buildkitd全局CA配置

将自定义CA证书添加到Buildkit的全局信任池中,让所有Buildkit发起的HTTP请求(包括ADD指令的下载)信任该CA。

修改buildkitd.toml,添加全局CA配置:

[registry."dockerhub.xxxx.internal"]
  ca=["./My-Custom-CA.pem"]

[worker.oci]
  ca-certificates = ["./My-Custom-CA.pem"]

重新创建Buildx Builder并执行构建:

docker buildx create --use --config buildkitd.toml
docker buildx build --load .

方法2:构建时通过环境变量传递CA证书

无需修改Buildkit配置,直接在构建命令中通过环境变量指定自定义CA:

docker buildx build --load --build-arg SSL_CERT_FILE=$(pwd)/My-Custom-CA.pem .

若需更安全的方式,可通过secret传递证书:

docker buildx build --load --secret id=custom_ca,src=My-Custom-CA.pem --build-arg SSL_CERT_FILE=/run/secrets/custom_ca .

方法3:创建Builder时挂载CA到系统信任目录

创建Buildx Builder时,将自定义CA挂载到Buildkit容器的系统信任目录:

docker buildx create --use \
  --config buildkitd.toml \
  --mount type=bind,src=$(pwd)/My-Custom-CA.pem,dst=/etc/ssl/certs/My-Custom-CA.pem,readonly

之后执行正常构建命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:31