本文系统代理以Clash为例
创建或编辑 Docker systemd 配置目录
bash复制编辑sudo mkdir -p /etc/systemd/system/docker.service.d
2️⃣ 写入代理配置文件
bash复制编辑sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
内容示例(HTTP/HTTPS 都写上,按你实际代理端口改):
ini复制编辑[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1"
3️⃣ 重新加载配置 & 重启 Docker
bash复制编辑sudo systemctl daemon-reload
sudo systemctl restart docker
4️⃣ 验证 Docker 环境变量是否生效
bash复制编辑sudo systemctl show --property=Environment docker
确认能看到:
ini复制编辑Environment=HTTP_PROXY=... HTTPS_PROXY=... NO_PROXY=...
5️⃣ pull 镜像测试
bash复制编辑docker pull busybox
确认可以正常走代理拉取。
补充说明:
-
代理为 socks5 时,Docker daemon 不直接支持 socks5,需要配 HTTP proxy 转 socks5(如 polipo / privoxy)
-
这个配置只影响 daemon 内部的拉取/构建,和容器内应用无关
-
如果你还需要容器内走代理,要在
docker run里手动-e传 proxy 环境变量进去。
示例:
bash复制编辑docker run -e HTTP_PROXY=http://127.0.0.1:8080 busybox env