给 Docker daemon 配 SOCKS5 代理
给 Docker daemon 配 SOCKS5 代理(推荐用 socks5h) 执行下面这套(把四行Environment的IP 换成你的,前3个是指定IP+端口,最后一个是指定IP段):
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf >/dev/null <<'EOF'
[Service]
Environment="HTTP_PROXY=socks5h://192.168.55.xx:334433"
Environment="HTTPS_PROXY=socks5h://192.168.55.xx:334433"
Environment="ALL_PROXY=socks5h://192.168.55.xx:334433"
Environment="NO_PROXY=localhost,127.0.0.1,::1,192.168.0.0/16,192.168.55.0/24"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
检查是否生效:
sudo systemctl show --property=Environment docker
额外排查(确认代理本身可用) 先用 curl 走 socks5 测一下网络是否通,如果这里都不通,那是代理服务或路由问题,不是 Docker 配置问题。
curl -I --proxy socks5h://192.168.55.xx:334433 https://ghcr.io/v2/
以上是通过给 systemd 的 Docker 服务加了一个“覆盖配置”。想改回去(取消代理)很简单,删掉这个覆盖文件,然后重载并重启 Docker。
sudo rm -f /etc/systemd/system/docker.service.d/proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
验证是否已清掉:
sudo systemctl show --property=Environment docker
