Docker容器的一次迁移
之前的服务器机房线路不稳定,访问经常出问题,还是换回了老机房DC2,那么又得折腾一次Docker的迁移过程,刚好记录下。假设两台美国VPS,需要进行Docker的迁移,旧主机A的IP:192.168.110.200,新主机B的IP:192.168.110.220 且都是公网IP,这次为了以后迁移方便,我安装了BT面板,这样以后如果在遇到迁移可以完全保留数据。
迁移方案概述
使用Docker镜像导出导入 + 数据卷备份的方式进行完整迁移。
详细迁移步骤
第一阶段:在旧主机A上准备迁移
1. 停止所有Docker容器
# 停止所有运行中的容器
docker stop $(docker ps -aq)# 检查容器状态
docker ps -a
2. 备份Docker数据卷
# 查看所有数据卷
docker volume ls# 备份每个数据卷(以mysql数据卷为例)
docker run --rm -v mysql_data:/volume -v /root/backup:/backup alpine \tar -czf /backup/mysql_data_backup.tar.gz -C /volume ./# 如果有多个数据卷,重复上述操作
docker run --rm -v app_data:/volume -v /root/backup:/backup alpine \tar -czf /backup/app_data_backup.tar.gz -C /volume ./
3. 导出Docker镜像
# 查看所有镜像
docker images# 导出所有镜像到文件
docker save $(docker images -q) -o /root/backup/all_docker_images.tar# 或者单独导出重要镜像
docker save nginx:latest -o /root/backup/nginx.tar
docker save mysql:8.0 -o /root/