最近在学习docker,经常遇到的一个问题是,在下载docker image的时候,由于众所周知的网络原因导致失败,虽然网上也有很多解决方案,比如使用Docker Hub Mirror 之类的国内镜像服务,不过由于个人原因(侥幸有一台国外的VM),我更倾向于不通过docker registry共享下载的image。

问题很明确:不通过docker registry,将A机器上的docker image共享给其他机器,即docker镜像本地迁移。

方案也很简单:使用docker的save 和 load命令, 具体步骤如下 
1.在A机器上列出所有的docker image,并找到你要保存的image名

sudo docker images
  • 1

2.在A机器上使用docker save命令,保存image为tar文件

sudo docker save image_name -o file_path
  • 1

其中,image_name替换为第一步里找到的要保存的image名。file_path是导出的tar文件路径,比如/home/tmp/image1.tar

3.将导出的image tar文件传到其他机器,如机器B。可以使用各种方式,比如scp之类的,在这里不详述了。

4.在需要使用image的机器上(如B机器)使用docker load命令加载image tar文件

sudo docker load -i file_path  
  • 1

注:另外,也可以使用docker 的export和import命令实现类似功能,关于export/save, import/load的区别,可以自己上网查,在此不做展开了。基本区别就是export出来的是容器(无历史和层信息),而save出来的是image(具有完整的历史和层信息,支持层回滚)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐