序言
本来不想写了,然后记笔记了,但是今天遇到这个问题了再一次,还是写一写吧,加深一下印象
因为Docker被墙了,所以拉取Docker镜像的时候,需要通过代理的方式
xxxxxxxxxx,此处省略十几个字,然后,在目标主机上面配置代理,但是需要注意的是,docker并不能使用bash的代理配置,所以需要额外配置docker的代理,这里需要注意,一开始认为不需要所以一直不通。
配置
Docker 使用代理的配置需要显式设置。默认情况下,Docker 守护进程和容器都不会使用系统的代理环境变量,因此你需要在 Docker 配置中指定代理。
在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。也可以通过daemon.json
配置代理
1.通过systemd方式
创建或编辑 Docker 配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.xx.xx:xxxx"
Environment="HTTPS_PROXY=http://192.168.xx.xx:xxxx"
Environment="NO_PROXY=localhost,127.0.0.1"
重新加载系统守护进程并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
可以通过docker info命令查看配置的代理
如果这个配置在里面,证明配置成功,如果没有,用方法二
2.通过daemon.json方式
在/etc/docker/daemon.json
中增加代理配置:
{"registry-mirrors": ["..."],"proxies": {"http-proxy": "http://<user>:<password>@<domain>:<port>","https-proxy": "http://<user>:<password>@<domain>:<port>","no-proxy": "<registry.domain>"}
}
重启Docker服务:
systemctl restart docker
检查配置是否生效:
docker info| grep Proxy
通过daemon.json
方式配置的优先级会高于通过systemd
配置。
结尾
还有就是Docker容器内部配置代理,这个也有好几种方法,暂不赘述。