本文使用Xshell工具,以mysql为例

一:容器的导入和导出

1:docker export 正在运行的容器id|容器名 > 文件名 (导出容器的内容作为一个归档文件)

这样一个归档的文件就已经导出了,然后可以通过scp命令将文件迁移到另外一台服务器上并导入

2:cat 文件名 | docker import 镜像名称

传输速度有点慢,等到传输完毕之后,我们从另外一台服务器上的tmp目录下可以看到:

 

 传输成功之后就可以进行容器的导入了

 这样就生成了一个新的镜像,注意上面报错提示,生成的镜像名必须是小写

3:注意:

      1:容器的导出有一个缺点就是导不出容器的变量和端口号,以及底层的数据,所以进行服务器迁移可能会出现错误,所以可以选择容器镜像迁移技术

       2:还有一点要注意的是,使用export命令时,注意是正在运行的容器,如果容器没有运行,就使用docker start 容器id|容器名 启动容器

二:容器镜像迁移技术

场景:有时候我们的容器可能在镜像的基础上做了一些修改,这时候我们希望保存起来封装成一个新的镜像,这样的话下次再这个新的镜像上运行容器时,就不需要再修改配制了

1:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

封装成一个新的镜像之后,可以上传到私服,也可以用过保存和加载容器进服务器迁移 

三:保存和加载容器

1:docker save 镜像名|id -o 文件名.tar (将镜像保存为一个tar文件,尽量用镜像名,可以防止虚玄镜像的出现)

2:通过scp技术将tar文件传输到另外一台服务器上

正在传输中 ,等待传输完毕,在另外其一台服务器上查看tmp目录下的文件

 此时可以看到文件已经传输完毕

3:docker load -i 文件名.tar (将tar文件加载并且保存为一个镜像)

 加载的镜像id和原本的镜像id一致

四:总结:以上提供了几种容器迁移的方法,操作之后你就可以体会到docker的便捷

      如果还想了解如何操作阿里云私服push和pull镜像,或者关于容器数据卷迁移问题以及整个docker容器的迁移问题,可以关注我,看我相关的文章

      

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐