背景
由于国内政策要求,导致大陆不能直接拉去 hub.docker.com 上的镜像。对于国内开发者来说很不方便。
所以就出现了很多代理方式例如:
这种方式能解决大部分情况。
问题
然而,有些不能改镜像名称,每次都要重新拉去校验的镜像是无法使用上述方式。
解决方案
我们可以通过网络代理方式,修改 docker 服务的代理实现拉取,当然你需要有自己的代理服务器。
实施方式
Linux 系统(以 systemd 管理的 Docker 为例)
1.创建或编辑 Docker 服务的 systemd 配置文件:
sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
2.添加以下内容(根据你的代理地址修改):
[Service] Environment="HTTP_PROXY=http://proxy.example.com:8080/" Environment="HTTPS_PROXY=http://proxy.example.com:8080/" Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
3.重新加载 systemd 配置并重启 Docker:
sudo systemctl daemon-reload sudo systemctl restart docker
4.验证配置:
sudo systemctl show --property=Environment docker
输出结果
[root@localhost ~]# sudo systemctl show --property=Environment docker Environment=HTTP_PROXY=http://*.*.*.*:*/ HTTPS_PROXY=http://*.*.*.*:*/ NO_PROXY=localhost,127.0.0.1
最终效果
[root@localhost ~]# docker pull ljtian/tcurl:0.3 0.3: Pulling from ljtian/tcurl 59bf1c3509f3: Pull complete 89b94c0aad31: Pull complete Digest: sha256:b226fe01e320e1e8efe14e7395ae743980ca19751531bdf07fcae0b9e0d3be36 Status: Downloaded newer image for ljtian/tcurl:0.3