前提:宿主机已经开启了加速器代理,你的实际linux出口:192.168.122.1,比如VMnet8的ipv4地址

1️⃣ 临时生效(当前 shell 会话)

在当前 shell 执行:

export http_proxy=http://192.168.122.1:7890
export https_proxy=http://192.168.122.1:7890
export no_proxy=localhost,127.0.0.1

然后执行:

docker login
docker pull hello-world

✅ 这种方法只对当前终端有效,关闭或重启 docker daemon 后无效。


2️⃣ 永久生效(Docker daemon 配置代理)

步骤:

  1. 创建 systemd 配置目录(如果不存在):
sudo mkdir -p /etc/systemd/system/docker.service.d
  1. 创建代理配置文件:
sudo nano /etc/systemd/system/docker.service.d/proxy.conf

写入内容:

[Service]
Environment="HTTP_PROXY=http://192.168.122.1:7890"
Environment="HTTPS_PROXY=http://192.168.122.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.122.0/24"

⚡ 注意:

  • NO_PROXY 可以加入你的虚拟机 NAT 网段,避免访问局域网走代理
  • 如果你的代理是 SOCKS5,Docker daemon 只能通过 HTTP/HTTPS 代理,SOCKS5 需要用 redsocks 或 polipo 转成 HTTP。
  1. 重新加载 systemd 配置并重启 Docker:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 验证 Docker 是否走代理:
docker info | grep -i proxy

你应该看到:

HTTP Proxy: http://192.168.122.1:7890
HTTPS Proxy: http://192.168.122.1:7890
No Proxy: localhost,127.0.0.1,192.168.122.0/24

3️⃣ 验证是否生效

docker login
docker pull hello-world
docker push bonegiao/myapp:latest

如果能正常登录并拉/推镜像,就说明 Docker CLI 和 daemon 都走代理了。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐