文章目录

  • 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

示例如下:

docker images迁移 docker 迁移 包括数据_docker


2 导出docker镜像为 tar 格式压缩包

将服务器01上我们 新做好的镜像导出成 tar 格式的压缩包

#这里如果不指定路径就在 服务器的根目录下
docker save 镜像id > xxx.tar

示例如下:

docker images迁移 docker 迁移 包括数据_linux_02


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要保存的文件位置

示例如下:

docker images迁移 docker 迁移 包括数据_docker_03


4 在备份服务器导入压缩包文件

#在服务器02上执行导入命令,导入压缩文件
docker load < xxx.tar

示例如下:

docker images迁移 docker 迁移 包括数据_mysql_04

查看导入的镜像

docker images迁移 docker 迁移 包括数据_docker_05


5 给镜像重新命名

docker tag 镜像名id  命名的镜像名:版本

docker images迁移 docker 迁移 包括数据_docker_06

6 迁移数据文件,运行镜像,创建容器

docker的容器迁移,如果是mysql/sqlserver 这些数据库容器就要自行迁移data数据文件和配置文件,如果是nginx这些则也要迁移nginx.conf 这些配置文件。

6.1 找到服务器01容器挂载路径

# 查看容器的详细信息 
docker inspect 容器名

示例如下

docker images迁移 docker 迁移 包括数据_linux_07

docker images迁移 docker 迁移 包括数据_mysql_08

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的数据迁移工作