在 docker 上设置代理

Bat*_*gev 3 proxy docker docker-compose docker-pull

我使用的是 centos 7.7 和 docker 19.03。

我无法拉图像并获得:

Error response from daemon: Get https://registry-1.docker.io.v2./: dial tcp lookup : server misbehaving
Run Code Online (Sandbox Code Playgroud)

我做了谷歌上所有指南的建议:

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

systemctl deamon reload
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

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

更多设置:/etc/enviroment

http_proxy=http://myproxy
https_proxy=https://myproxy
Run Code Online (Sandbox Code Playgroud)

代理设置用于工作并且正在另一台服务器上工作。在这台服务器上,我删除了 docker 旧版本:

docker-1.13.1
docker-common-1.13.1
docker-client-1.13.1
Run Code Online (Sandbox Code Playgroud)

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

Bat*_*gev 6

解决了!我猜是因为我使用的是 Centos,然后 systemctl restart docker没有真正起作用。

创建目录:

mkdir -p /etc/systemd/system/docker.service.d
Run Code Online (Sandbox Code Playgroud)

创建文件:

nano /etc/systemd/system/docker.service.d/http-proxy.conf
Run Code Online (Sandbox Code Playgroud)

添加以下行:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"
Run Code Online (Sandbox Code Playgroud)

重启守护进程:

systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

这个重启方法有效:

service docker restart
Run Code Online (Sandbox Code Playgroud)

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