docker-compose v2 忽略$HOME/.docker/config.json代理配置如何解决
问题根因
Docker Compose V2 作为Docker CLI插件运行,默认启用BuildKit作为构建后端,而旧版Python编写的docker-compose默认使用传统Docker构建后端。两者的代理注入逻辑存在差异:传统构建后端会自动读取$HOME/.docker/config.json中的proxies配置注入构建环境,但BuildKit默认不会继承该配置,因此会出现容器内部构建时无法联网的问题。
无需绑定构建逻辑与环境的解决方案
方案1:临时关闭BuildKit执行构建
执行构建命令时添加环境变量关闭BuildKit,即可完全复用旧版docker-compose的代理配置逻辑,不需要修改任何项目文件:
DOCKER_BUILDKIT=0 docker compose build
如果需要长期生效,可以将该环境变量写入当前用户的shell配置文件(如~/.bashrc、~/.zshrc):
export DOCKER_BUILDKIT=0
方案2:保留BuildKit的前提下自动注入代理
如果你需要使用BuildKit的特性不想关闭,可以在执行构建命令时自动传入本地代理配置,不需要修改项目内的Dockerfile或docker-compose.yml:
docker compose build \ --build-arg http_proxy="$http_proxy" \ --build-arg https_proxy="$https_proxy" \ --build-arg no_proxy="$no_proxy"
你也可以将该命令设置为shell别名,不需要每次手动输入参数。
额外注意事项
你当前配置中的noProxy字段开头多了一个多余的逗号,可能会导致内网地址不走直连规则,建议修改为:
"noProxy": "10.225.226.0/24"
内容的提问来源于stack exchange,提问作者paweł bogaczewicz
相关产品推荐
相关产品推荐

