在 docker 上设置代理

Set proxy on docker

我使用的是 centos 7.7 和 docker 19.03.

我无法拉取图像并获取:

Error response from daemon: Get https://registry-1.docker.io.v2./: dial tcp lookup : server misbehaving

我按照 google 上所有指南的建议做了:

cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Enviroment="HTTP_PROXY=http://myproxy"

systemctl deamon reload
systemctl restart docker

什么也没发生。 如果我回显 $http_proxy 我会看到我的设置。

更多设置: /etc/enviroment

http_proxy=http://myproxy
https_proxy=https://myproxy

代理设置曾经有效并且正在另一台服务器上有效。 在此服务器上,我删除了 docker 个旧版本:

docker-1.13.1
docker-common-1.13.1
docker-client-1.13.1

对于较旧的 docker 它似乎可以工作,但对于 docker-ce 则不行。 我什至重新启动并重新安装。

设置两个变量,它们都可以设置到你的http服务器。该变量用于代理的流量类型,而不是代理服务器的协议:

[Service]
Enviroment="HTTP_PROXY=http://myproxy"
Enviroment="HTTPS_PROXY=http://myproxy"

解决了! 我想是因为我正在使用 Centos 然后做 systemctl restart docker 没有真正起作用。

创建了目录:

mkdir -p /etc/systemd/system/docker.service.d

创建文件:

nano /etc/systemd/system/docker.service.d/http-proxy.conf

添加以下行:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

重启守护进程:

systemctl daemon-reload

并且这种重启方法奏效了:

service docker restart

然后它接受了所有的环境变量

latest documentation 详细介绍了 Docker 使用代理服务器的配置,这对我构建最新的 docker 映像很有帮助。

  • 对于最新的 docker 客户端 (>= v17.07) 创建或编辑文件 ~/.docker/config.json

  • 对于较旧的 docker 客户端 (<= v17.06) 使用 --env 标志相应地设置代理