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

常规Docker Push正常但Buildx(docker-container)推送失败:导出镜像报错

问题解决:buildx推送本地HTTP镜像仓库失败

错误原因

常规Docker命令能正常推送是因为你已经在Docker daemon配置中把本地仓库设为不安全注册表(允许HTTP访问),但buildx使用的docker-container驱动运行在独立容器中,不会继承本地daemon的不安全注册表配置,默认强制使用HTTPS访问仓库,导致出现http: server gave HTTP response to HTTPS client错误。

解决方案

方案1:构建命令中直接允许不安全注册表

在docker buildx build命令中添加--allow insecure-registry=<registry>:5000参数,同时别忘了加上--push(buildx默认不自动推送,需要显式声明):

docker buildx build \
  --builder my-builder \
  --tag <registry>:5000/demo \
  -f Dockerfile . \
  --push \
  --allow insecure-registry=<registry>:5000

方案2:创建构建器时预配置不安全注册表

创建构建器时,通过--buildkitd-flags指定允许不安全注册表,后续构建无需重复加参数:

docker buildx create --use --name my-builder \
  --driver docker-container \
  --driver-opt network=host \
  --buildkitd-flags '--allow-insecure-entitlement security.insecure --registry-config <(echo "{\"insecure-registries\": [\"<registry>:5000\"]}")'

创建完成后,执行带--push的构建命令即可:

docker buildx build --builder my-builder --tag <registry>:5000/demo -f Dockerfile . --push

额外注意

  • 确保你的本地镜像仓库确实是HTTP服务(未配置SSL证书),若后续配置了HTTPS证书,需移除上述不安全配置。
  • 若使用network=host驱动选项,需确认本地仓库在host网络下可正常访问。

内容的提问来源于stack exchange,提问作者Chris G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:22