这是个常见问题:即使你在 ~/.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