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