Docker容器迁移,网站快速搬家到新服务器

网站跑在Docker里,换服务器时不必重装环境,只要把镜像和数据卷完整搬过去就能继续运行。
本文按零基础可照做的顺序,讲清从旧机导出、传输、到新机恢复启动的完整流程,并给出验证和排错方法。

迁移前先确认这两类数据

Docker容器本身是无状态的,真正要搬的是镜像挂载数据

  • 镜像:用 docker images 查看,例如 nginx:latestmysql:8
  • 数据卷:用 docker volume ls 查看,或看 docker inspect 容器名 里的 Mounts 字段。网站代码、数据库文件、上传目录通常都在这里。
  • 额外检查:docker-compose.yml.env、Nginx 配置等编排文件也要一起复制。

如果网站用的是绑定挂载(如 -v /www/html:/usr/share/nginx/html),直接打包宿主机目录即可;
如果是命名卷,则用下面的卷打包方式。

在旧服务器导出镜像与数据

先停止写入,避免数据不一致:

docker stop 容器名

导出镜像为 tar 文件:

docker save -o website-images.tar nginx:latest mysql:8

如果有多个镜像,把名字依次写在后面。
数据卷用临时容器打包:

docker run --rm -v 卷名:/data -v $(pwd):/backup alpine tar czf /backup/volume-data.tar.gz -C /data .

绑定挂载的目录直接压缩:

tar czf /root/html-backup.tar.gz -C /www/html .

把镜像包、卷包和编排文件一起传到新服务器:

scp website-images.tar volume-data.tar.gz root@新服务器IP:/root/
传输大文件时建议用 rsync -avP,断线可续传。

新服务器导入并启动容器

先确认新机已安装 Docker:

docker version

没有输出就按官方文档安装。
然后导入镜像:

docker load -i /root/website-images.tar

docker images 确认镜像已存在。
恢复数据卷:

docker volume create 卷名
docker run --rm -v 卷名:/data -v /root:/backup alpine tar xzf /backup/volume-data.tar.gz -C /data

绑定挂载则解压到对应目录:

mkdir -p /www/html
tar xzf /root/html-backup.tar.gz -C /www/html

最后用原来的启动命令或 docker compose up -d 拉起容器。
如果之前用 docker run,可先用 docker inspect 在旧机查看完整参数,再在新机复现。

迁移后必须做的四项验证

  • 容器状态:docker ps 应显示 Up,没有反复重启。
  • 端口监听:ss -tlnp | grep 80 确认端口已监听。
  • 页面访问:浏览器打开域名,检查首页、登录页和上传功能。
  • 日志排查:docker logs -f 容器名 看是否有数据库连接失败或权限报错。

数据库容器尤其要确认数据目录权限,常见报错是 Permission denied,需要把卷目录属主改为容器内用户。

容易踩坑的几个细节

端口冲突:新服务器若已运行 Nginx 或 Apache,80 端口会被占用,启动前先 systemctl stop nginx 或改映射端口。

网络模式:旧机用了自定义 bridge 网络,新机也要先 docker network create 再启动,否则容器间无法按名字通信。

环境变量:数据库密码、密钥等常写在 .env 或启动参数里,漏掉会导致连不上。

架构差异:如果新旧服务器 CPU 架构不同(如 x86 迁到 ARM),docker load 后可能无法运行,需要在新机重新拉取对应架构镜像。

常见疑问

迁移后网站能打开,但数据库连不上怎么办?
先看 docker logs 里数据库容器是否正常启动,再检查连接地址是否用了容器名而非 localhost

必须停容器才能迁移吗?
数据库建议停写后导出,静态网站可以在低峰期直接打包,但为一致性仍推荐短暂停机。

镜像包太大传得慢怎么办?
可以在新服务器直接 docker pull 相同镜像,只传数据卷和编排文件,能省不少时间。

Docker容器迁移的核心就是镜像加数据卷两件事,按导出、传输、导入、验证的顺序执行,大多数网站都能在半小时内完成搬家。
遇到启动失败时,优先看 docker logs 和端口占用,再检查卷权限和网络配置。

分享到:
上一篇
Docker一键搭建Nginx+PHP+MySQL建站环境
下一篇
KVM虚拟化搭建私有云,多台虚拟服务器管理
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意