零基础Docker容器迁移备份实战指南:从导出到恢复全流程

前置准备


在开始 Docker容器迁移备份 之前,请确保你已经满足以下条件:



  • 一台装有Docker的源服务器(如CentOS、Ubuntu等),Docker版本 >= 19.03。

  • 一个正在运行的容器(建议先停止,避免写操作导致数据不一致)。

  • 目标服务器(也需安装Docker,且网络可通或通过U盘拷贝文件)。

  • 基础命令认知:知道如何通过SSH登录服务器,会使用 ls、cd 等简单命令。


如果你还没有Docker环境,可以在宝塔面板中点击「软件商店」→「Docker」一键安装,或执行:

curl -fsSL https://get.docker.com | bash -s docker

分步操作


第一步:将容器保存为镜像



  1. 查看正在运行的容器名称(假设你的容器叫 myapp):


   docker ps


  1. 可选:停止容器(避免迁移过程中有写入):


   docker stop myapp


  1. 使用 docker commit 将容器当前状态打包为新镜像:


   docker commit myapp myapp_backup:latest

这会在本地生成一个名为 myapp_backup 的新镜像。


第二步:导出镜像为文件


使用 docker save 将镜像导出为 .tar 文件:


docker save -o myapp_backup.tar myapp_backup:latest

完成后你会得到一个 myapp_backup.tar 文件(通常几十到几百MB)。


第三步:传输文件到目标服务器


根据你的实际环境选择传输方式:



  • 同一局域网:使用 scp 命令将文件复制到目标服务器(假设目标IP是192.168.1.100):


  scp ./myapp_backup.tar root@192.168.1.100:/root/


  • 离线环境:通过U盘拷贝,或使用 wget / rsync 等工具。


第四步:在目标服务器上加载镜像


登录目标服务器,执行:


docker load -i /root/myapp_backup.tar

用 docker images 确认镜像已出现:


docker images | grep myapp_backup

第五步:启动新容器


根据原容器的启动参数重新运行容器。

如果不记得原参数,可通过 docker inspect 在新机器上查看(需先从老机器导出inspect信息),这里给出通用示例:


docker run -d --name myapp_new -p 8080:80 myapp_backup:latest

注意:如果原容器挂载了数据卷(volume),请先在新机器上创建相同路径的卷或目录(参考下文避坑指南)。

可选:直接备份并恢复数据卷


如果你的容器使用了 具名卷,可以借助以下命令备份:


docker run --rm -v myapp_data:/source -v $(pwd):/backup alpine tar czf /backup/data_backup.tar.gz -C /source .

然后在目标机器上恢复:


docker run --rm -v myapp_data:/target -v $(pwd):/backup alpine tar xzf /backup/data_backup.tar.gz -C /target

避坑指南



  • docker commit 不包含数据卷(volume):挂载在主机的目录或命名卷不会被打包进镜像,必须单独备份。

  • docker export vs docker save:export 导出的是容器文件系统,不保留镜像层和元数据,推荐使用 save/load 组合。

  • 传输文件权限问题:确保目标服务器有写入权限,如果使用 scp 要确认 SSH 密钥或密码正确。

  • 网络映射冲突:新机器上如果原端口已占用,需换成其他端口,或先停掉冲突服务。

  • 容器启动后立即退出:检查日志 docker logs myapp_new,多半是缺少环境变量或挂载卷路径不存在。


效果验证



  1. 检查容器状态:


   docker ps -a | grep myapp_new

显示 Up 即运行中。



  1. 访问应用:如果你的容器运行的是一个Web服务,用浏览器打开 http://目标IP:映射端口,确认页面正常。

  2. 验证数据完整性:如果迁移前容器内有数据库或文件,登录容器确认数据存在:


   docker exec -it myapp_new bash

进入容器后检查相关文件或数据库表

高频问题解答


Q1:容器迁移后数据卷里的数据丢失了怎么办?

A:这是因为 docker commit 不保存数据卷。请提前使用 docker run --rm -v 卷名:/source -v 备份路径:/backup alpine tar 单独备份数据卷,然后在目标机器恢复。


Q2:迁移多个容器时有没有批量方法?

A:可以写一个简单脚本,循环 docker ps -a --format "{{.Names}}" 来挨个 commit 和 save。但要注意保证容器名不重复。


Q3:是否可以迁移不同版本Docker的容器?

A:使用 save/load 方式兼容性较好,但跨大版本(如19.x到24.x)可能会遇到兼容问题,建议先在测试环境验证。


Q4:迁移后IP地址变了,容器内部连接数据库的配置要改吗?

A:如果数据库也随容器迁移且使用了容器内部网络别名,则不需要改;如果数据库IP是写死的,则需修改配置文件(建议用环境变量或外部配置文件挂载)。


如果你正在处理 Docker容器迁移备份,建议先按本文步骤完整执行,再根据自己的环境做微调;

遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
WordPress新手必看:这些WP插件推荐必备,少一个都后
下一篇
零基础也能远程管理服务器:宝塔面板手机APP运维全攻略
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意