文章内容

2025/12/5 0:42:38,作 者: 黄兵

Docker 迁移实例

在上篇文章中,我们详细讲述了 Docker 迁移的三种方式:Docker 迁移,这篇文章中我们以实际案例看看如何迁移一个运行的实例。

首先我们登录 A 服务器,看到这个实例的目录结构,同时第三层目录有一个 compose.yaml 文件:


🧩 一、你的实际数据结构分析

服务名 镜像 数据持久化方式 说明
web ghcr.io/cedar2025/xboard:new 本地挂载卷 .docker/.data/storage/logsstorage/themeplugins 这里面包含 SQLite 数据
horizon 同上 同样挂载 .docker/.data/plugins 共享相同的持久化路径
redis redis:7-alpine 本地挂载 .docker/.data/redis:/data Redis 数据保存在 .docker/.data/redis

✅ 二、结论:你已经使用了“持久化挂载卷”

这意味着:

所有 Redis 数据、SQLite 数据、日志、插件等都已经保存在宿主机当前目录结构中,而不是仅存在容器内部!

👉 因此,你的迁移根本不需要 docker commit
你只需要迁移这些持久化文件目录即可。

📦 三、要迁移的内容

在项目目录下(含 docker-compose.yml 的同级目录)执行:

tar czvf xboard_backup_$(date +%Y%m%d).tar.gz \
  .env \
  .docker/.data/ \
  storage/ \
  plugins/

这会打包以下内容:

路径 含义
.env 应用环境变量配置
.docker/.data/redis/ Redis 数据
.docker/.data/ SQLite 数据(以及应用临时数据)
storage/ 日志、主题文件
plugins/ 插件代码
🖥️ 在目标服务器上:
  1. 安装 Docker 与 docker-compose(如果还没装),具体安装过程可以查看这篇文章:Ubuntu 24.04 如何安装 DockerUbuntu 24.04 安装 Docker Compose v2

  2. 上传你的项目文件(包含 docker-compose.yml

  3. 解压你的数据包:

    我们按照原来的服务器目录,新建文件夹,在第三层文件夹下面将 docker-compose.yml 和 xboard_backup_20251205.tar.gz 复制过去:

    • 复制完成之后,我们在这个目录执行:
    tar xzvf xboard_backup_20251205.tar.gz


      • 解压完成之后,启动容器:
      docker compose up -d


      ✅ 启动后,Redis 会自动加载 .docker/.data/redis/dump.rdb
      ✅ SQLite 数据会直接从 .docker/.data/ 中读取
      ✅ 所有配置都与原环境完全一致

      🧰 五、总结

      内容 你当前状态 是否需额外操作
      Redis 数据 已挂载 .docker/.data/redis ✅ 自动迁移
      SQLite 数据 存在 .docker/.data/ ✅ 自动迁移
      应用配置 .env 本地文件 ✅ 打包迁移
      镜像 来自 GitHub Container Registry 🚀 可自动拉取,无需打包
      docker-compose.yml 部署定义文件 ✅ 保留即可

      总结一句话:

      你只需复制 .env.docker/.data/storage/plugins/ 这四个目录文件夹到新机器,再执行 docker-compose up -d,所有服务(含 Redis 与 SQLite 数据)会无缝恢复。

      其它相关推荐:

      1、Docker 迁移

      2、Ubuntu 24.04 如何安装 Docker

      3、Ubuntu 24.04 安装 Docker Compose v2

      4、查看所有 docker 容器占用内存

      5、Python 项目 docker 部署过程

      分享到:

      发表评论

      评论列表