数据持久化策略
Docker 容器数据持久化的策略和最佳实践
📋 目录
数据卷生命周期
数据卷创建
# 创建数据卷
docker volume create my-volume
# 使用数据卷
docker run -d -v my-volume:/data nginx:latest数据卷删除
# 删除数据卷
docker volume rm my-volume
# 删除所有未使用的数据卷
docker volume prune数据卷备份
备份方法
# 方法 1:使用临时容器
docker run --rm \
-v my-volume:/data \
-v $(pwd):/backup \
ubuntu:20.04 \
tar czf /backup/backup.tar.gz /data
# 方法 2:直接备份
docker run --rm \
-v my-volume:/data \
ubuntu:20.04 \
tar czf - /data > backup.tar.gz定时备份
# 使用 cron 定时备份
0 2 * * * docker run --rm -v my-volume:/data -v /backup:/backup ubuntu:20.04 tar czf /backup/backup-$(date +\%Y\%m\%d).tar.gz /data数据卷恢复
恢复方法
# 恢复数据卷
docker run --rm \
-v my-volume:/data \
-v $(pwd):/backup \
ubuntu:20.04 \
tar xzf /backup/backup.tar.gz -C /数据迁移
迁移到新主机
# 1. 备份数据卷
docker run --rm -v my-volume:/data ubuntu:20.04 tar czf - /data > backup.tar.gz
# 2. 传输到新主机
scp backup.tar.gz user@new-host:/path/
# 3. 在新主机恢复
docker volume create my-volume
docker run --rm -v my-volume:/data -v /path:/backup ubuntu:20.04 tar xzf /backup/backup.tar.gz -C /数据卷驱动
使用不同驱动
# 使用本地驱动
docker volume create --driver local my-volume
# 使用 NFS 驱动
docker volume create \
--driver local \
--opt type=nfs \
--opt device=:/path/to/nfs \
my-volume最佳实践
1. 使用命名数据卷
# 生产环境使用命名数据卷
docker run -d -v db-data:/var/lib/postgresql/data postgres:132. 定期备份
# 设置定时备份任务3. 数据卷命名规范
# 使用有意义的名称
docker volume create app-db-data
docker volume create app-uploads4. 监控数据卷使用
# 查看数据卷使用情况
docker system df -v