文章目录
- docker进行数据迁移
- 环境准备
- 1 制作docker 镜像
- 2 导出docker镜像为 tar 格式压缩包
- 3.使用scp 进行linux服务器之间数据拷贝
- 4 在备份服务器导入压缩包文件
- 5 给镜像重新命名
- 6 迁移数据文件,运行镜像,创建容器
- 6.1 找到服务器01容器挂载路径
- 6.2 拷贝文件到服务器02
- 6.3 运行创建容器
docker进行数据迁移
当我们用服务器,使用docker容器进行容器化管理项目时,可能会碰到这样的情况,把一台服务器上docker的容器数据迁移到另外一台服务器上。
比如服务器01上docker管理的mysql,现在因为云服务器到期了,或者要搭建集群之类的,要把整个mysql容器迁移到 服务器02 上。这个时候就涉及到了docker的数据迁移,docker本身也是支持数据迁移的,下面就来具体介绍一下。
环境准备
数据原本存在的linux:服务器01 (以下步骤都叫 服务器01 )
备份的linux:服务器02 (以下步骤都叫 服务器02 )
1 制作docker 镜像
首先在服务器01上找到要备份的容器,并使用docker commit 制作新镜像
如果你备份的是类似于mysql这样的数据库,你的容器名就是你最后的库名(ps:不知道其他容器的情况,大家可以补充一下)
#使用查看要备份的容器id
docker ps -a
#使用docker commit 制作新的镜像
docker commit 容器id 新镜像名
#查看镜像 中是否有自己刚刚制作的镜像
docker images
示例如下:
2 导出docker镜像为 tar 格式压缩包
将服务器01上我们 新做好的镜像导出成 tar 格式的压缩包
#这里如果不指定路径就在 服务器的根目录下
docker save 镜像id > xxx.tar
示例如下:
3.使用scp 进行linux服务器之间数据拷贝
登录到 服务器02 执行 scp 直接可以实现linux 服务器之间的拷贝
#要把 192.168.68.2 opt 下的 mysql_liu.tar 拷贝到本地 opt下
#scp -r root@192.168.68.2:/opt/mysql_liu.tar /opt
scp -r root@服务器01的ip:文件在服务器01的位置 服务器02要保存的文件位置
示例如下:
4 在备份服务器导入压缩包文件
#在服务器02上执行导入命令,导入压缩文件
docker load < xxx.tar
示例如下:
查看导入的镜像
5 给镜像重新命名
docker tag 镜像名id 命名的镜像名:版本
6 迁移数据文件,运行镜像,创建容器
docker的容器迁移,如果是mysql/sqlserver 这些数据库容器就要自行迁移data数据文件和配置文件,如果是nginx这些则也要迁移nginx.conf 这些配置文件。
6.1 找到服务器01容器挂载路径
# 查看容器的详细信息
docker inspect 容器名
示例如下
6.2 拷贝文件到服务器02
这里将 服务器01上挂载存储文件的 /home/mysql/
文件夹拷贝到 服务器02 上
6.3 运行创建容器
在服务器02 上运行
#将创建的容器挂载在 从服务器01 上面拷贝过来的 /home/mysql 下的数据上
#-v /home/mysql/conf:/etc/mysql/conf.d 映射配置文件
#-v /home/mysql/log:/var/log/mysql 映射日志
#-v /home/mysql/data:/var/lib/mysql 映射数据
docker run --restart=always -d -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -p 3310:3306 --name mysql -d mysql_liu:v1
以上便可完成docker的数据迁移工作