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.使用镜像运行容器

使用刚刚导入的镜像,运行为一个容器:
这里写图片描述

查看容器运行状况:
这里写图片描述
进入容器:
docker容器的迁移_第1张图片

你可能感兴趣的:(docker)