Docker配置Proxy

半兽人 发表于: 2025-07-15   最后更新时间: 2025-07-15 17:10:20  
{{totalSubscript}} 订阅, 47 游览

Docker 代理配置指南

一、临时代理设置(开发/测试时用)

命令行设置(仅当前终端有效):

PROXY_URL="http://127.0.0.1:1087"

export HTTP_PROXY=${PROXY_URL}
export HTTPS_PROXY=${PROXY_URL}
export NO_PROXY="localhost,127.0.0.1,docker.yourcompany.com"

使用场景:

  • 临时测试代理是否可用;
  • 用于执行如 curldocker build 等命令时;
  • 关闭终端或注销 shell 后失效。

一、环境变量说明

1. HTTP_PROXY / HTTPS_PROXY

  • 作用:告诉各种网络工具(如 curlpipaptdocker build 等)在访问 HTTP / HTTPS 网络时要通过指定的代理地址转发请求
  • 格式

    • http://ip:port 例如:http://127.0.0.1:1087
    • 有用户名密码的写法:http://username:password@proxy.example.com:8080
  • 支持的协议:通常是 HTTP 代理,也可能支持 SOCKS(如 socks5://,但支持情况有限)
示例:
export HTTP_PROXY=http://127.0.0.1:1087
export HTTPS_PROXY=http://127.0.0.1:1087

2. NO_PROXY

  • 作用:告诉系统 “对这些地址不要走代理,直接访问”。
  • 格式:逗号分隔的一组域名/IP 或通配符
示例:
export NO_PROXY="localhost,127.0.0.1,dockerhub.mycompany.com,.internal"

上面的意思是:

  • localhost127.0.0.1(本地回环地址)不会经过代理;
  • dockerhub.mycompany.com 是公司内网的镜像源,也不走代理;
  • .internal 代表所有结尾是 .internal 的域名(例如 svc.internal)都不走代理。

重点提示
如果你不设 NO_PROXY,本地访问也会尝试走代理,容易导致访问失败或非常慢。


二、全局持久配置(推荐用于开发机)

写入 ~/.bashrc~/.zshrc(取决于你用哪个 Shell):

# ~/.bashrc 或 ~/.zshrc

PROXY_URL="http://127.0.0.1:1087"

export HTTP_PROXY=${PROXY_URL}
export HTTPS_PROXY=${PROXY_URL}
export NO_PROXY="localhost,127.0.0.1,dockerhub.yourcompany.com"

保存后执行:

source ~/.bashrc    # 或 source ~/.zshrc

使用场景:

  • 适用于所有命令行工具;
  • 所有新的 shell 会话都会继承;
  • 不会影响 Docker 守护进程后台拉镜像行为

三、Docker Daemon(后台服务)配置代理

适用于 docker pulldocker-compose up 拉镜像等行为

1. 创建配置目录:

sudo mkdir -p /etc/systemd/system/docker.service.d

2. 创建配置文件:

sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

内容如下(按需修改):

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1087"
Environment="HTTPS_PROXY=http://127.0.0.1:1087"
Environment="NO_PROXY=localhost,127.0.0.1,dockerhub.yourcompany.com"

3. 重启 Docker:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker

4. 验证是否生效:

sudo systemctl show --property=Environment docker

四、Docker 构建镜像(client)配置代理

方式一:写入 ~/.docker/config.json

mkdir -p ~/.docker

nano ~/.docker/config.json

内容如下:

{
  "proxies": {
    "default": {
      "httpProxy": "http://127.0.0.1:1087",
      "httpsProxy": "http://127.0.0.1:1087",
      "noProxy": "localhost,127.0.0.1,dockerhub.yourcompany.com"
    }
  }
}

作用:会让 docker build 构建过程自动使用代理。


方式二:Dockerfile 中设置 ENV(容器构建时用)

FROM ubuntu:22.04

ENV HTTP_PROXY=http://127.0.0.1:1087
ENV HTTPS_PROXY=http://127.0.0.1:1087
ENV NO_PROXY=localhost,127.0.0.1

方式三:运行容器时临时传入

docker run \
  -e HTTP_PROXY=http://127.0.0.1:1087 \
  -e HTTPS_PROXY=http://127.0.0.1:1087 \
  -e NO_PROXY=localhost,127.0.0.1 \
  ubuntu:22.04 curl http://google.com

总结表格

场景 配置方法 是否推荐
临时测试代理 export HTTP_PROXY=... ✅ 开发调试
永久生效(命令行工具) .bashrc / .zshrc ✅ 推荐
Docker 构建镜像时走代理 ~/.docker/config.json ✅ 推荐
Docker 拉取镜像走代理(daemon) /etc/systemd/system/docker.service.d/*.conf ✅ 必须
Dockerfile 设置代理 ENV HTTP_PROXY=... ✅ 如需构建
运行容器时传入代理 docker run -e HTTP_PROXY=... ✅ 临时使用
更新于 2025-07-15
在线,2分钟前登录

查看docker更多相关的文章或提一个关于docker的问题,也可以与我们一起分享文章