docker pull拉取国外镜像通过代理
1.问题定位思路
docker 确实支持通过 HTTP(S) proxy 拉镜像,但它不读取你当前 shell 的 http_proxy 环境变量(除非你用 systemd override)。
最常见的“不生效”场景是:你的终端里 export http_proxy=xxx 生效了,但 Docker 守护进程 dockerd 没有使用这些代理变量。
1.1.根因
Docker CLI(docker 命令)不是直接拉镜像的,实际拉镜像的是 dockerd 守护进程;
如果 dockerd 没配置代理,它就不会走代理,而是直接访问外网 → 导致拉取失败或无代理流量。
2.docker pull 通过 HTTP/HTTPS 代理的正确配置方式(systemd)
2.1.为 Docker 守护进程配置代理
创建或编辑:
/etc/systemd/system/docker.service.d/http-proxy.conf
or
/usr/lib/systemd/system/docker.service # 推荐修改这个
内容为:
[Service]
Environment="HTTP_PROXY=http://your-proxy:port/"
Environment="HTTPS_PROXY=http://your-proxy:port/"
Environment="NO_PROXY=localhost,127.0.0.1,*.yourdomain"
然后刷新 systemd 配置并重启 docker:
systemctl daemon-reload
systemctl restart docker
2.2.验证代理是否生效
docker info
滚到最底部会显示:
HTTP Proxy: http://...
HTTPS Proxy: http://...
