Volume 驱动与备份
Volume 驱动扩展了 Docker 存储能力,下面介绍驱动管理与备份方法。
Volume 驱动
查看驱动
Bash
# 查看可用驱动
docker volume ls
# 查看驱动详情
docker info | grep "Volume"
# 输出
Volume: local
本地驱动(默认)
Bash
# 创建本地卷
docker volume create my-data
# 存储在 /var/lib/docker/volumes/my-data/_data
远程驱动
Bash
# 使用 SSH 驱动
docker volume create \
--driver vieux/sshfs \
-o SSH_KEY_PASSWORD=pass \
-o allow_other \
ssh-volume
# 使用 NFS 驱动
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=192.168.1.100,rw \
--opt device=:/path/to/share \
nfs-volume
备份策略
完整备份
Bash
# 备份卷到 tar 包
docker run --rm \
-v my-data:/data:ro \
-v $(pwd):/backup \
alpine \
tar czf /backup/backup-$(date +%Y%m%d).tar.gz -C /data .
增量备份
Bash
# 使用 rsync 增量备份
docker run --rm \
-v my-data:/data:ro \
-v $(pwd):/backup \
alpine/rsync \
-av /data/ /backup/latest/
自动化备份脚本
Bash
#!/bin/bash
# backup.sh
VOLUME=$1
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
docker run --rm \
-v ${VOLUME}:/data:ro \
-v ${BACKUP_DIR}:/backup \
alpine \
tar czf /backup/${VOLUME}-${DATE}.tar.gz -C /data .
echo "Backup completed: ${VOLUME}-${DATE}.tar.gz"
恢复操作
Bash
# 从备份恢复
docker volume create my-data-restore
docker run --rm \
-v my-data-restore:/data \
-v $(pwd):/backup \
alpine \
tar xzf /backup/my-data-20240101.tar.gz -C /data
# 验证恢复
docker run --rm -v my-data-restore:/data alpine ls /data
定期备份
Bash
# crontab 配置
# 每天凌晨2点备份
0 2 * * * /path/to/backup.sh my-data
# 每周日完整备份,其他增量
0 2 * * 0 /path/to/backup.sh my-data full
0 2 * * 1-6 /path/to/backup.sh my-data incremental
清理旧备份
Bash
# 保留最近7天备份
find /backup -name "*.tar.gz" -mtime +7 -delete
# 或使用 Docker 卷清理
docker volume prune -f --filter "until=168h"
监控卷使用
Bash
# 查看卷大小
docker run --rm -v my-data:/data alpine du -sh /data
# 查看卷详情
docker volume inspect my-data
# 查看磁盘使用
docker system df -v
要点总结
- 默认使用 local 驱动,支持 NFS、SSH 等远程驱动
- 使用临时容器 + tar 打包实现卷备份
- 增量备份使用 rsync 减少备份体积
- crontab 自动化定期备份,定期清理旧备份
docker system df -v监控卷磁盘使用情况
📝 发现内容有误?点击此处直接编辑