docker容器的迁移
0.背景需要把云服务器上用docker搭建的大数据集群迁移到本地的主机上。大数据集群有一个master主节点和slave01、slave02两个计算节点。云上服务器和本地的主机的数量都只有一台,是采用docker虚拟化的方式搭建大数据集群。要求迁移后数据不会丢失。1.用export&import 还是 save &am
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.使用镜像运行容器
使用刚刚导入的镜像,运行为一个容器:
查看容器运行状况:
进入容器:
更多推荐
所有评论(0)