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

已配置insecure-registries,docker build拉取私有镜像仍报HTTP响应HTTPS错误

问题根源定位

这个问题是开启BuildKit作为默认构建器后,旧版本BuildKit未正确继承Docker daemon的insecure-registries配置导致的,和你本地的insecure-registries配置正确性无关,具体逻辑如下:

  • Docker 20.10+版本开启BuildKit后,docker build实际调用BuildKit组件完成构建,你使用的BuildKit版本(v0.6.1,对应docker info里的buildx插件版本)存在已知缺陷:不会读取daemon.json里的insecure-registries配置,拉取基础镜像时默认强制走HTTPS协议,因此会报http: server gave HTTP response to HTTPS client错误
  • 而docker pull、docker push走的是Docker daemon原生的镜像交互逻辑,会正确加载insecure-registries配置,所以这两个操作可以正常运行
解决方案

方案1:临时关闭BuildKit执行构建

单次构建时临时禁用BuildKit即可正常拉取镜像:

DOCKER_BUILDKIT=0 docker build .

如果要全局关闭,修改daemon.json里的features配置,将buildkit设为false后重启Docker Desktop即可:

{
  "features" : {
    "buildkit" : false
  }
}

方案2:升级Docker Desktop到最新版本

该BuildKit缺陷在后续版本已经修复,升级到Docker Desktop 4.2.0及以上版本(对应BuildKit v0.9+)后,BuildKit会自动继承daemon的insecure-registries配置,不需要额外修改即可正常构建。

方案3:给BuildKit单独配置私有仓库规则

如果不想关闭BuildKit也不想升级版本,可以在BuildKit配置文件中添加私有仓库的HTTP访问规则,Docker Desktop可以直接在设置页的BuildKit配置项中添加如下内容:

[registry."<dns-name>:<port>"]
  http = true
  insecure = true

配置完成后重启Docker即可生效。

注:insecure-registries的配置本身不需要加http://前缀,官方要求格式就是host:port或者CIDR段,你之前加http前缀报错属于正常现象,不需要调整该配置的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:54:03