Docker 容器(minio 和 redis)迁移——含数据

1️⃣ MinIO 容器迁移

MinIO 是对象存储服务,它的数据是关键部分,一般存放在你运行容器时挂载的卷(volume)或宿主机目录中。你需要把数据和配置一起迁移。

步骤:

  1. 查看 MinIO 容器的挂载卷/数据目录

docker inspect minio | grep Mounts -A 5

你会看到类似:

"Mounts": [
{
"Type": "bind",
"Source": "/data/minio",
"Destination": "/data"
}
]

这里 /data/minio 就是宿主机上的数据目录。

  1. 打包数据

tar czvf minio-data.tar.gz -C /data minio

如果数据量大,可考虑使用 rsync 直接同步到新服务器。

  1. 导出镜像

docker pull minio/minio:latest # 确保新服务器也有镜像
docker save -o minio_image.tar minio/minio:latest
  1. 迁移到新服务器

scp minio-data.tar.gz new_server:/data/
scp minio_image.tar new_server:/data/
  1. 在新服务器上恢复

# 解压数据
tar xzvf /data/minio-data.tar.gz -C /data

# 导入镜像
docker load -i /data/minio_image.tar

# 启动容器
docker run -d \
--name minio \
-p 9000-9001:9000-9001 \
-v /data/minio:/data \
minio/minio:latest server /data


2️⃣ Redis 容器迁移

Redis 数据也很重要,默认在容器内内存,但你应该配置了 RDB/AOF 持久化,一般挂载到宿主机的卷。

步骤:

  1. 查看 Redis 挂载卷

docker inspect redis | grep Mounts -A 5

假设挂载目录是 /data/redis

  1. 打包数据

tar czvf redis-data.tar.gz -C /data redis
  1. 导出镜像

docker save -o redis_image.tar redis:latest
  1. 迁移到新服务器

scp redis-data.tar.gz new_server:/data/
scp redis_image.tar new_server:/data/
  1. 解压缩文件

tar -zxvf redis-data.tar.gz -C /data
tar -zxvf minio-data.tar.gz -C /data

3️⃣ 小贴士

  • 数据量大:推荐直接 rsync -avz /data/minio/ new_server:/data/minio/,可以保留权限和增量同步。

  • 镜像版本:尽量保持源服务器和目标服务器 Docker 版本一致,避免兼容性问题。

  • 容器配置:如果有自定义环境变量(如 MinIO 的 MINIO_ACCESS_KEYMINIO_SECRET_KEY),记得在新服务器 docker run 时加上:

-e MINIO_ACCESS_KEY=xxx -e MINIO_SECRET_KEY=xxx

如果

 

tar-C 参数和路径选择。


1️⃣ 关于 tar -C /data Name

命令格式:

tar czvf archive.tar.gz -C /some/path folder_or_file
  • -C /some/path 改变当前目录到 /some/path

  • 后面的 folder_or_file 是在这个目录下你要打包的内容

所以:

tar czvf minio-data.tar.gz -C /data minio

意思是:

  1. cd /data

  2. 然后把 /data/minio 目录打包进 minio-data.tar.gz

  3. 解压时会保持目录结构为 minio/...,不会把整个 /data 路径包含进去

✅ 这比直接 tar czvf minio-data.tar.gz /data/minio 更干净,不会把宿主机的 /data 顶级路径也打包进去。


2️⃣ MinIO 的路径

你的 MinIO 容器挂载了宿主机路径:

Source: /data/minio
Destination: /data

所以确实是 /data/minio,打包时:

tar czvf minio-data.tar.gz -C /data minio

或者直接:

tar czvf minio-data.tar.gz -C /data/minio .
  • 第一种:打包后的结构是 minio/...

  • 第二种:打包后只包含 minio 内的文件,没有 minio 目录层级

通常推荐第一种,更容易在新服务器 /appdata 下恢复成 /appdata/minio


3️⃣ Redis 的路径

Redis 使用的是 Docker 卷,你 inspect 看到:

Source: /data/docker/volumes/03b045cf58335cbb4a1d110c6482067a1d2514e2b0a6d2f33e6cfe0ea5af6573/_data
Destination: /data
  • 所以 Redis 数据在宿主机的 /data/docker/volumes/.../_data

  • 迁移时可以打包:

tar czvf redis-data.tar.gz -C /data/docker/volumes/03b045cf58335cbb4a1d110c6482067a1d2514e2b0a6d2f33e6cfe0ea5af6573 _data

建议解压到新服务器 /appdata/redis,然后再 docker run 时挂载 /appdata/redis 到容器 /data


4️⃣ 新服务器目录规划

你希望都放到 /appdata

容器 源数据路径 新服务器挂载路径
MinIO /data/minio /appdata/minio
Redis /data/docker/volumes/.../_data /appdata/redis

恢复命令示例:

# MinIO
docker run -d \
--name minio \
-p 9000-9001:9000-9001 \
-v /appdata/minio:/data \
minio/minio:latest server /data

# Redis
docker run -d \
--name redis \
-p 6379:6379 \
-v /appdata/redis:/data \
redis:latest


版权声明:
作者:yxbinghe
链接:https://www.zhanhao.ch/?p=634
来源:ice.99
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>