在Docker中,卷对应宿主机物理位置,但直接去备份可能会造成路径错误、数据一致性等问题,官方建议通过挂载并打包的方式进行迁移。
- 在宿主机上执行备份命令
docker run --rm \
-v chatgpt_mirror_db:/mnt/chatgpt_mirror_db \
-v chatgpt_gateway_db:/mnt/chatgpt_gateway_db \
-v $(pwd):/backup \
busybox \
sh -c "cd /mnt && tar czvf /backup/chatgpt_volumes_backup.tar.gz chatgpt_mirror_db chatgpt_gateway_db"
- 在目标主机上创建卷
如果是docker-compose项目先在项目中创建卷再恢复
docker volume create chatgpt_mirror_db
docker volume create chatgpt_gateway_db
- 恢复卷操作
docker run --rm \
-v chatgpt_mirror_db:/mnt/chatgpt_mirror_db \
-v chatgpt_gateway_db:/mnt/chatgpt_gateway_db \
-v $(pwd):/backup \
busybox \
sh -c "cd /mnt && tar xzvf /backup/chatgpt_volumes_backup.tar.gz"
- 检查数据恢复情况
docker run -it --rm -v <卷名>:/data busybox sh