为 docker pull 配置代理
概述
在系统配置了代理的情况下,docker pull 依然无法下载镜像,提示 Error response from daemon: Get https://registry-1.docker.io
。
产生这个问题的原因是因为 Docker 在拉取镜像时,并不使用系统配置的代理,而是使用 Docker daemon 的配置。
解决方案
方法一:修改 daemon.json registry-mirrors 配置
该方法需要使用能正常访问的镜像代理。
1 | sudo tee /etc/docker/daemon.json <<EOF |
方法二:配置 Docker proxies
某些情况下,镜像代理也无法被访问,这时就需要使用 HTTPS 代理来拉取镜像。该方法需要使用能正常访问 Docker 镜像源的 HTTPS 代理。[1]
以下两种方式任选其一:
daemon.json
1 | sudo tee /etc/docker/daemon.json <<EOF |
systemd unit file
1 | sudo mkdir -p /etc/systemd/system/docker.service.d |
代理值中的特殊字符(例如 #?!()[]{})必须使用 %% 进行双重转义。例如:
1 | [Service] |
验证:
1 | sudo systemctl show --property=Environment docker |
输出:
1 | Environment=HTTP_PROXY=http://代理地址 HTTPS_PROXY=http://代理地址 |
Tips
注意,以上配置代理的方式并不影响容器内部网络,要为容器配置代理,请参考Use a proxy server with the Docker CLI [2]