Docker 容器(minio 和 redis)迁移——含数据
1️⃣ MinIO 容器迁移
MinIO 是对象存储服务,它的数据是关键部分,一般存放在你运行容器时挂载的卷(volume)或宿主机目录中。你需要把数据和配置一起迁移。
步骤:
-
查看 MinIO 容器的挂载卷/数据目录
你会看到类似:
{
"Type": "bind",
"Source": "/data/minio",
"Destination": "/data"
}
]
这里 /data/minio 就是宿主机上的数据目录。
-
打包数据
如果数据量大,可考虑使用
rsync直接同步到新服务器。
-
导出镜像
docker save -o minio_image.tar minio/minio:latest
-
迁移到新服务器
scp minio_image.tar new_server:/data/
-
在新服务器上恢复
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 持久化,一般挂载到宿主机的卷。
步骤:
-
查看 Redis 挂载卷
假设挂载目录是 /data/redis。
-
打包数据
-
导出镜像
-
迁移到新服务器
scp redis_image.tar new_server:/data/
-
解压缩文件
3️⃣ 小贴士
-
数据量大:推荐直接
rsync -avz /data/minio/ new_server:/data/minio/,可以保留权限和增量同步。 -
镜像版本:尽量保持源服务器和目标服务器 Docker 版本一致,避免兼容性问题。
-
容器配置:如果有自定义环境变量(如 MinIO 的
MINIO_ACCESS_KEY和MINIO_SECRET_KEY),记得在新服务器docker run时加上:
如果
tar 的 -C 参数和路径选择。
1️⃣ 关于 tar -C /data Name
命令格式:
-
-C /some/path改变当前目录到/some/path -
后面的
folder_or_file是在这个目录下你要打包的内容
所以:
意思是:
-
先
cd /data -
然后把
/data/minio目录打包进minio-data.tar.gz -
解压时会保持目录结构为
minio/...,不会把整个/data路径包含进去
✅ 这比直接 tar czvf minio-data.tar.gz /data/minio 更干净,不会把宿主机的 /data 顶级路径也打包进去。
2️⃣ MinIO 的路径
你的 MinIO 容器挂载了宿主机路径:
Destination: /data
所以确实是 /data/minio,打包时:
或者直接:
-
第一种:打包后的结构是
minio/... -
第二种:打包后只包含
minio内的文件,没有minio目录层级
通常推荐第一种,更容易在新服务器 /appdata 下恢复成 /appdata/minio。
3️⃣ Redis 的路径
Redis 使用的是 Docker 卷,你 inspect 看到:
Destination: /data
-
所以 Redis 数据在宿主机的
/data/docker/volumes/.../_data -
迁移时可以打包:
建议解压到新服务器
/appdata/redis,然后再docker run时挂载/appdata/redis到容器/data。
4️⃣ 新服务器目录规划
你希望都放到 /appdata:
| 容器 | 源数据路径 | 新服务器挂载路径 |
|---|---|---|
| MinIO | /data/minio | /appdata/minio |
| Redis | /data/docker/volumes/.../_data | /appdata/redis |
恢复命令示例:
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
cd /root/.minio/certs
mkcert -key-file private.key -cert-file public.crt wisDom.local 10.23.116.58
chmod 600 private.key public.crt
重要。