在使用docker的时候我们都会用到镜像,而有些镜像是非常难下载的,或者在一台主机上拉取镜像后,能不能通过导入导出的功能把docker images迁移到其他主机上呢?(不考虑用私服的情况下)

答案是肯定的。

一、docker镜像的导出(docker images镜像保存)

docker save -o <要保存的文件名.tar> <要保存的源镜像id>

例如:
1-1.查询所有镜像,找到你想要保存的源镜像,比如我们要保存nginx/nginx-ingress 的镜像,那么执行命令docker images后可以看到它的镜像id是b68fb03da1ee
[root@master ~]# docker images
REPOSITORY                                                                     TAG                 IMAGE ID            CREATED             SIZE
nginx/nginx-ingress                                                            1.6.3               b68fb03da1ee        5 days ago          165MB

1-2.保存镜像(导出镜像)
[root@master ~]# docker save -o nginx-ingress.tar b68fb03da1ee

注释:
nginx-ingress.tar是你导出的镜像的文件名,名字你可以随意命名(最好以.tar结尾)
b68fb03da1ee是用docker images查出来的你想要导出的镜像的id

1-3.然后在你的当前目录下就会发现多出来个nginx-ingress.tar文件。

 

二、docker镜像的导入(docker images镜像加载)

想办法把刚才保存的镜像弄到目标服务器上去(略)

1.导入镜像到新服务器上

docker load -i <导出好的镜像文件完整文件名>

例如:
1-1.导入docker镜像
[root@client ~]# docker load -i nginx-ingress.tar

1-2.查看所有镜像
[root@client ~]# docker images
此时你会发现本机docker镜像库多出来个没有镜像名,又没有镜像id的一个神奇镜像,没错,这个就是刚才你导入的那个镜像。记住它的id(比如镜像标签是imageidqq37213690),马上要用到它。

1-3.给镜像打标签
[root@client ~]# docker tag imageidqq37213690 nginx/nginx-ingress:1.6.3
(啰嗦:你未必必须将镜像标签名命名和导出前一样,完全可以改成你想要的,如:harbor.hiibm.com/nginx-ingress-image:1.6.3)
如果没有报错,ok,那至此docker镜像就导出成功并导入成功了。

 

---------------------------------END------------------------2020年3月12日14:42:02---------------------------------

老铁随手点个赞吧,双击666666666666666666666

Logo

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

更多推荐