这是个常见问题:即使你在 ~/.docker/config.json 中配置了代理,Docker 镜像拉取依然慢的原因通常不是“代理配置没生效”,而是:
❗ ~/.docker/config.json 中的代理配置 仅用于 Docker 客户端访问私有仓库的身份认证或特性配置,不会影响 Docker 守护进程的网络请求!
{
"proxies": {
"default": {
"httpProxy": "http://127.0.0.1:7897",
"httpsProxy": "http://127.0.0.1:7897",
"allProxy": "http://127.0.0.1:7897"
}
}
}
✅ 正确的做法:配置 Docker 守护进程使用代理
对于 systemd 管理的 Docker(Arch Linux 就是这样),你应这样配置
sudo mkdir -p /etc/systemd/system/docker.service.d
创建配置文件:
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
填入内容(以 HTTP 代理为例,支持 socks5 等):
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7897"
Environment="HTTPS_PROXY=http://127.0.0.1:7897"
Environment="NO_PROXY=localhost,127.0.0.1"
如果你用的是 Clash、Hiddify 等代理软件,请根据实际端口调整 7890。
然后重新加载并重启 Docker
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
🔎 验证代理是否生效
docker info | grep -i proxy
如果能看到如下类似输出说明代理配置生效:
HTTP Proxy: http://127.0.0.1:7897
HTTPS Proxy: http://127.0.0.1:7897
✅ 可选:设置国内加速器(拉取速度激增)
在 /etc/docker/daemon.json 中配置国内镜像加速:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
填入:
{
"registry-mirrors": ["https://registry.docker-cn.com", "https://mirror.baidubce.com", "https://docker.mirrors.ustc.edu.cn"]
}
保存后重启 Docker:
sudo systemctl restart docker