无法使用DockerPull正常拉取镜像解决方案

前言

由于众所周周知的原因,目前无法简单通过正常手段从DockerHub拉取镜像。这里给出两个解决方案,需要有非大陆地区的服务器,如果没有非大陆地区的服务器,可以参考构建自己的代理服务器(续篇),花个几分钱完成拉取后,再删除即可

解决方案

这里给出两个解决方案,本质是相同的,就是看长期还是短期的镜像拉取需求

代理请求

如果你已经有了相应的代理服务,那么直接使用即可,编辑Docker配置文件vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
HTTP_PROXY="http://your_domin.com:your_port"
HTTPS_PROXY="https://your_domin.com:your_port"

如果你使用的是SOCKS5代理,配置为:

[Service]
Environment="HTTP_PROXY=socks5://your_domin.com:your_port"
Environment="HTTPS_PROXY=socks5://your_domin.com:your_port"

配置完成后执行:

sudo systemctl daemon-reload && sudo systemctl restart docker

此时即可正常拉取镜像

如果目前没有代理,请参考本站的构建自己的代理服务器以及构建自己的代理服务器(续篇)构建SOCKS服务后再进行配置

镜像拷贝

如果小伙伴很少拉取镜像,只需要一个或者几个镜像在本地,此后几乎没有镜像需求了。可以使用非大陆地区服务器拉取镜像后,传到内网服务器,再安装到内网Docker中即可,具体操作如下:

  1. 首先再非大陆地区服务器正常拉取镜像:docker pull your_img:tag
  2. 然后将镜像打包,压缩:docker save -o image.tar your_img:tag && gzip image.tar
  3. 然后将镜像下载到本地,传入内网服务器
  4. 最后解压后安装到本地Docker即可:gzip -d image.tar.gz && docker load -i image.tar