前言:
今天需要使用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