1. 把对应容器的镜像导出为tar包
docker ps -a 查看所有的容器列表及其对应的镜像名:
我这里使用的是 postgres 镜像。
导出容器对应的镜像为tar压缩包,命令格式如下:
# -o 是 --output 的简写,用于指定输出文件的路径和文件名
docker save -o 路径/文件名.tar 镜像名
导出过程需要等待十几秒左右,我这里导出 postgres 镜像到 /home/hcc_server/ 目录下并保存为 postgresql.tar。
导出后使用SFTP软件把 tar 包拷贝到新的服务器上。
2. 导入tar镜像
新服务器上找到对应 tar 包使用docker load进行导入
# -i 是 --input 的简写,用于指定输入文件的路径
docker load -i 路径/文件名.tar
再使用 docker images 查看对应镜像是否导入成功。
3. 数据迁移
在原服务器上查询容器对应的挂载信息:
docker inspect 容器ID或容器名称
使用此命令可以查看容器的详情信息,找到 Mounts 即为挂载信息。
其中Type为挂载的类型,Source为宿主机数据目录文件,Destination为容器中数据目录文件夹。
Docker数据持久化详情参考:https://cloud.tencent.com/developer/news/438552
使用SFTP软件把宿主机上的数据文件夹拷贝至新的服务器上。
在新的服务上启动对应镜像的容器时挂载从旧的服务器上拷贝过来的数据文件夹。
# -v 宿主机文件目录:容器中数据目录
# -e 可指定启动时的环境变量
docker run -d --name 镜像名 -p 5432:5432 -v /home/newuser/docker/pg_data:/var/lib/postgresql/data postgres
Docker启动命令参数详情参考:https://www.runoob.com/docker/docker-run-command.html
至此登录到新的服务器上的Postgresql时会发现数据库中数据都迁移过来了。