Docker:镜像的迁移

因为网络实在太烂了,总结一下从202将现有镜像搬到207的过程。

先说导出,两种方法:docker save 和 docker export,前者保存镜像,后者导出容器。

docker save docker.io/java:7-jre > img_java_7_jre.tar

而导出容器则需要先启动一个容器。

docker run -it docker.io/java:7-jre
docker export 7e8a0dc1cb88 > java_7_jre.tar

注意,这里的 7e8a0dc1cb88是容器的ID。
然后我们会得到两个tar文件,大小略有不同,一个来自镜像的备份,一个来自容器的备份。

-rw-r--r--. 1  354796032 3月  25 09:10 img_java_7_jre.tar
-rw-r--r--. 1  350644224 3月  25 09:09 java_7_jre.tar     

然后,使用SCP将它们从202拷到207上面去。
下面都在207上操作了。

先从容器备份恢复一下,方法:

cat java_7_jre.tar | docker import - java:7-jre

这里我们可以重新命名了,原来202上的名字太罗嗦了。
测试一下,执行时会发现报错,必须加上入口命令才能运行。

# docker run -it java:7-jre
Error response from daemon: No command specified
# docker run -it java:7-jre /bin/bash
root@5ce0c4d8c896:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5ce0c4d8c896:/# java -version
java version "1.7.0_95"
OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
root@5ce0c4d8c896:/#
root@5ce0c4d8c896:/#
root@5ce0c4d8c896:/# exit
exit 

与我们原来的行为略有不同。

再试一下从镜像备份的恢复,先把刚才启动的这个容器删除,再加载备份即可。

docker rm -f 5ce0c4d8c
docker load < img_java_7_jre.tar

现在用 docker images 就可以看到新的镜像了。
同样执行一下,会发现它带有一个入口。

# docker run -it java:7-jre
root@f6feabb7ebb7:/#                

猜你喜欢

转载自blog.csdn.net/sharetop/article/details/50977044
今日推荐