Docker容器迁移


前言:

今天需要使用docker的迁移功能,于是又是两个小时的爆肝


docker export/import与docker save/load的区别:

export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
save/load会保存完整记录,体积更大

如果直接将export&import作用于container,那么打包的东西不会包含存储层的数据,例如,开了一个mysql容器,那么容器中的相关配置信息会保留,但是mysql数据库中存的数据不会被保留。而如果将一个container进行commit后,再使用save&load,可以保留相应的数据。

由于需要保留迁移后的数据,因此使用save&load这种方式。


定制镜像:

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

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


导出镜像:

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

查看导出的文件:


传输文件:

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


导入镜像:

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

查看镜像文件:


使用镜像运行容器:

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

docker run -p 19132:19132/udp --name my_docker_server -itd docker_lesson:1.0  # 创建并运行docker_lesson:1.0镜像 使用udp传输

查看容器运行状况:

进入容器:

参考文章:

https://blog.csdn.net/weixin_36343850/article/details/80553680x


  目录