docker容器的迁移

 

 

 

 

 

0.背景

需要把云服务器上用docker搭建的大数据集群迁移到本地的主机上。大数据集群有一个master主节点和slave01、slave02两个计算节点。

  • 云上服务器和本地的主机的数量都只有一台,是采用docker虚拟化的方式搭建大数据集群。
  • 要求迁移后数据不会丢失。

1.用export&import 还是 save & load ?

export&import 和 save & load 是docker中的两组命令,我们先主要看看他们的区别:

类型作用作用对象能否保留数据导出的内容主要的应用场景
export & import 用来将container的文件系统进行打包的 container 不可以 一个Linux系统的文件目录 制作基础镜像
save & load 用来将一个或者多个image打包 image(container实际上也可以,但其实际上作用的是container下的image) 可以 一个分层的文件系统(相对于前者比较大,因为多层文件系统中可能有东西是重合的) 打包多个镜像

具体的区别可以查看这篇博客docker save与docker export的区别,写得很清晰。 
基于以上对比,save&load 方式可以保留数据,所以使用save&load这种方式。

 

2.定制镜像

由于save&load实际操作的是image,所以导出之前,要先使用commit命令把容器中相对于其底层镜像的修改,提交为一层文件系统,与原有的image结合过程一个新的image。新的image中会包含所有修改的内容。 
(ps:这种制作镜像的方式不被提倡,因为这样做会保留一些元数据信息,导致image过大,如果想用于制作一个简洁的镜像,需使用DockerFile的方式定制镜像,这里不做详述) 
这样以一个容器salve02为例,将它提交到一个叫做theslave02的镜像上,再打上标签 

提交完成后我们可以看到这么一个image: 

 

 

3.导出镜像

把镜像导出为一个输出文件: 

查看导出的文件:

4.传输文件

将导出的输出文件通过scp的方式发送到本地的主机上: 

5.导入镜像

在本地主机上,将受到的文件导入为镜像文件:

查看镜像文件: 

6.使用镜像运行容器

使用刚刚导入的镜像,运行为一个容器: 

查看容器运行状况: 

进入容器: 

 

参考文章: https://blog.csdn.net/weixin_36343850/article/details/80553680 

posted @ 2018-08-10 15:27  求其在我  阅读(4450)  评论(0编辑  收藏  举报