Transclude of 【docker】局域网服务器如何拉取镜像-synced-block

问题

  1. 近日镜像服务器不提供服务了,咋办?
  2. 当使用docker pull 总是超时,怎么办?
  3. 当服务器只有局域网的时候,想要去获取docker镜像应该如何是好?

解决

方案一 使用俄罗斯镜像

https://mirror.yandex.ru/

优点:适合单独pull镜像使用,俄罗斯大厂提供服务

缺点:不支持配置到 daemon.json

使用方式:docker pull cr.yandex/mirror/nginx

前提是这镜像里得有,才能拉取

方案二 自建

TODO

方案三 找个”中间人”

个人在用

中间人设备:可以访问dockerhub的机器

目标设备:访问不了dockerhub,且想要部署某个docker的设备

  1. 找个可以正常访问dockerhub的机器— 中间人设备
  2. 使用 docker pull 命令拉取响应的镜像
  3. 保存镜像 docker save -o /path/to/xxx.tar xxx:laster
  4. 将保存的镜像存储到目标设备
  5. 在目标设备执行docker load -i/path/toxxx.tar

示例

 
# 找一个可以上外网的机器
docker pull nginx:1.26.1
 
# 导出镜像
docker save -o ./nginx-1.26.1.tar nginx:1.26.1
 
 # 上传到目的服务
---------------------------------
 
 # 在目的服务器上执行导入
 docker load -i nginx-1.26.1.tar
 
root@ubuntu:~# docker load -i /home/sv_mp1/sv_share/vic/dockerhub/nginx-1.26.1.tar
9853575bc4f9: Loading layer [==================================================>]  77.83MB/77.83MB
9c94fd337c9a: Loading layer [==================================================>]  113.9MB/113.9MB
fd2e008dc94f: Loading layer [==================================================>]  3.584kB/3.584kB
4d10ac38b61c: Loading layer [==================================================>]  4.608kB/4.608kB
3b747725bc80: Loading layer [==================================================>]   2.56kB/2.56kB
60c134e8aebc: Loading layer [==================================================>]   5.12kB/5.12kB
9a97f522cdaa: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:1.26.1
 

参考链接

国内无法访问下载Docker镜像的多种解决方案

利用 Cloudflare Workers 自建 Docker 镜像 - 知识库 - Bryan 的知识库