Docker:镜像的迁移

来源:互联网 发布:psv如何重新构筑数据库 编辑:程序博客网 时间:2024/04/27 21:55

因为网络实在太烂了,总结一下从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-jredocker 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-jreError response from daemon: No command specified# docker run -it java:7-jre /bin/bashroot@5ce0c4d8c896:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  varroot@5ce0c4d8c896:/# java -versionjava 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:/# exitexit 

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

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

docker rm -f 5ce0c4d8cdocker load < img_java_7_jre.tar

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

# docker run -it java:7-jreroot@f6feabb7ebb7:/#                
0 0