docker容器迁移-不丢失数据跨主机

2019-08-17  本文已影响0人  haiyong6

docker容器迁移

最近买了一台新电脑 因为不想把数据又重新新建导入一遍 想要把数据库环境迁移到新电脑上 用到了docker迁移

用export&import 还是 save & load ?

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

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

所以根据自己的需求 想要保留docker数据库里的数据,所以选择save&load

save&load操作的是images 所以要先把容器commit成镜像

一、打包镜像

如把myoracle11g这个容器打包成镜像导出,再从其他机子上导入:

docker commit --author zhaohy --message "create the oracle11g by zhaohy" myoracle11g oracle11g:v0

其中的oracle11g:v0是新镜像的名字v0是标签

提交完成后用docker images可以看到我们新提交的镜像

二、导出镜像

docker save -o oracle11g oracle11g:v0

其中 第一个oracle11g是导出的文件名可自定义 后面的oracle11g:v0就是我们制作的新镜像

docker会把文件导出到终端所在目录 镜像就导出完成啦

三、导入镜像

把导出的文件复制到第二台机子上随便一个目录用终端打开这个目录导入到第二台机子的docker中

docker load -i oracle11g

用docker images查看镜像 会发现oracle11g:v0镜像已经导入进来啦

四、重新run一下导入的镜像 生成一个容器

docker run -d --name myoracle11g -p 1521:1521 -p 8080:8080 -e ORACLE_ALLOW_REMOTE=true -e ORACLE_PWD=oracle --shm-size=1g --restart=always oralce11g:v0

至此就迁移完成啦。

参考:

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

上一篇 下一篇

猜你喜欢

热点阅读