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

Linux下Docker build无法使用代理的问题求助(Docker 23.0.1)

Docker Build时代理失效导致I/O超时的解决办法

问题根源

docker run和docker compose拉取镜像用的是容器层面的代理配置,但docker build是由Docker守护进程执行的构建操作,守护进程的代理配置和容器运行时相互独立——这就是前者正常、后者出现超时的核心原因。

具体解决方案

1. 配置Docker守护进程全局代理

编辑(或新建)Docker守护进程的配置文件 /etc/docker/daemon.json,写入以下内容:

{
  "proxies": {
    "default": {
      "httpProxy": "http://你的代理IP:端口",
      "httpsProxy": "http://你的代理IP:端口",
      "noProxy": "localhost,127.0.0.1,localaddress,.localdomain.com"
    }
  }
}

把你的代理IP:端口替换成实际的代理地址,noProxy里可添加不需要走代理的本地或内网地址。

配置完成后重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

2. 临时在Build过程中指定代理

如果不想修改全局配置,可在执行docker build时通过--build-arg传递代理参数:

docker build --build-arg HTTP_PROXY=http://你的代理IP:端口 --build-arg HTTPS_PROXY=http://你的代理IP:端口 .

用Docker Compose的话,在docker-compose.yml的build节点下添加参数:

services:
  你的服务名:
    build:
      context: .
      args:
        - HTTP_PROXY=http://你的代理IP:端口
        - HTTPS_PROXY=http://你的代理IP:端口

3. 验证代理的网络连通性

先确认Docker主机能正常访问代理服务器,执行以下命令测试:

curl -x http://你的代理IP:端口 https://registry-1.docker.io/v2/

如果返回{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]},说明代理连通正常(匿名拉取镜像时这个返回是正常的);如果还是超时,得先排查代理服务器的网络可达性,比如防火墙、代理权限等问题。

4. 处理Docker BuildKit的特殊情况

如果你的Docker启用了BuildKit,可能需要额外配置代理。可以在/etc/docker/daemon.json里补充BuildKit的配置:

{
  "proxies": {
    "default": {
      "httpProxy": "http://你的代理IP:端口",
      "httpsProxy": "http://你的代理IP:端口",
      "noProxy": "localhost,127.0.0.1,localaddress,.localdomain.com"
    }
  },
  "features": {
    "buildkit": true
  }
}

或者临时通过环境变量指定:

DOCKER_BUILDKIT=1 HTTP_PROXY=http://你的代理IP:端口 HTTPS_PROXY=http://你的代理IP:端口 docker build .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:28