一、设置代理原因
因为公司安全需要,所有外网需配置代理后才能上网,dockerpullcentos会报错: docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).原因:如果在docker 宿主机上设置了代理(HTTP、HTTPS)之后,在docker daemon 启动的时候,也要相应的告知 daemon,使用代理来访问internet!!二、代理配置
官网解释如下:
有两种方式:1. 通过daemon.json文件来修改 2. 通过覆盖docker.service来实现 但是对于代理的配置,官网讲只能使用第二个方案。 具体的步骤如下:
1、创建docker.service目录mkdir -p /etc/systemd/system/docker.service.d2、创建HTTP&HTTPS代理文件vi /etc/systemd/system/docker.service.d/http-proxy.conf
具体配置内容: # proxy-addr为代理IP或域名;proxy-port为代理端口;NO_PROXY后面接不需要代理的私有仓库的域名或者IP,以英文逗号结尾
[Service]Environment="HTTP_PROXY=http://proxy-addr:proxy-port"#代理服务器地址Environment="HTTPS_PROXY=http://proxy-addr:proxy-port"#httpsEnvironment="NO_PROXY=localhost,127.0.0.0/8,docker-,.corp" #哪些地址不需要走代理
三、重启docker
systemctl daemon-reloadsystemctl restart docker
四、查看配置结果
[root@node1 ~]# sudo systemctl show --property=Environment dockerEnvironment=HTTP_PROXY=http://proxy-addr:proxy-port/ HTTPS_PROXY=http://proxy-addr:proxy-port/ NO_PROXY=localhost,127.0.0.0/8,docker-,.corp
参考链接:[/config/daemon/systemd/ 官方:docker添加http代理