最近在学习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
2.在A机器上使用docker save命令,保存image为tar文件
sudo docker save image_name -o file_path
其中,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
注:另外,也可以使用docker 的export和import命令实现类似功能,关于export/save, import/load的区别,可以自己上网查,在此不做展开了。基本区别就是export出来的是容器(无历史和层信息),而save出来的是image(具有完整的历史和层信息,支持层回滚)