VS Code Docker扩展构建镜像无法访问私有仓库问题
VS Code Docker扩展构建私有仓库基础镜像报错解决方案
问题表现
- 使用VS Code Docker扩展右键菜单的「build image...」功能构建镜像时,Dockerfile首行引用私有仓库基础镜像
FROM privateRegistry.com:port/image触发构建失败 - 终端执行
docker info可确认目标私有仓库已加入insecure-registries列表,VS Code外部命令行环境可正常拉取、运行该私有仓库的镜像 - 构建抛出的错误信息如下:
=> ERROR [internal] load metadata for privateRegistry.com:port/image 0.1s ------ > [internal] load metadata for privateRegistry.com:port/image: ------ failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "privateRegistry.com:port/v2/image/manifests/3.9.4": http: server gave HTTP response to HTTPS client
根因
VS Code Docker扩展默认启用BuildKit作为构建后端,该模式下扩展不会自动继承系统Docker配置的insecure-registries规则,默认强制使用HTTPS协议请求镜像仓库,和私有仓库返回的HTTP响应协议不匹配,最终触发报错。
解决方法
- 方法一:关闭扩展的BuildKit构建能力
- 打开VS Code设置面板,搜索配置项
docker.dockerfile.buildKit - 取消该配置项的勾选,将值设置为
false - 重新触发镜像构建即可正常拉取私有仓库基础镜像完成构建
- 打开VS Code设置面板,搜索配置项
- 方法二:保留BuildKit能力的前提下配置私有仓库HTTP访问规则
- 确认系统Docker的
daemon.json配置文件中已正确添加目标私有仓库到insecure-registries列表 - 打开VS Code设置面板,搜索配置项
docker.buildkit.config - 在配置中添加对应私有仓库的
http = true访问规则,重启VS Code后重新执行构建即可
- 确认系统Docker的
内容的提问来源于stack exchange,提问作者jwolverson
相关产品推荐
相关产品推荐

