Files
nexus/wiki/entities/Docker卷.md
2026-04-22 08:02:59 +08:00

76 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Docker卷"
tags: [docker, storage, container]
date: 2026-04-26
---
# Docker卷 (Docker Volume)
## Definition
Docker 卷是 Docker 容器用于持久化数据的首选机制。与容器层不同,卷存储在宿主机文件系统上,由 Docker 管理,独立于容器的生命周期。
## Key Properties
- **持久性**: 数据在容器删除后依然保留
- **独立性**: 卷与容器文件系统隔离
- **共享性**: 多个容器可挂载同一卷
- **Host 管理**: Docker CLI 可直接管理卷
## Default Location
Linux 系统中Docker 卷默认存储在:
```
/var/lib/docker/volumes/
```
## Docker卷备份策略
### Method 1: rsync 直接同步 (不推荐数据库)
```bash
rsync -azR --delete \
/var/lib/docker/volumes/ \
/mnt/nas_backup/docker_backups/
```
**⚠️ 警告**: 直接同步二进制数据库文件可能导致恢复后无法启动。
### Method 2: mysqldump + rsync (推荐用于数据库)
```bash
# 在容器中执行 mysqldump
docker exec <mysql_container> mysqldump -u root -p --all-databases > dump.sql
# rsync 同步导出文件
rsync -az /path/to/dump.sql /mnt/nas_backup/docker_backups/
```
### Method 3: docker save / docker load
```bash
# 导出镜像
docker save -o images.tar image_name:tag
# rsync 传输
rsync -az images.tar user@nas:/backup/
# 导入镜像
docker load < images.tar
```
## Related Concepts
- [[增量备份]] — Docker 卷备份是增量备份策略的重要组成部分
- [[Docker-Image]] — 镜像备份使用 docker save/load
- [[Docker-Save]] — 镜像导出命令
- [[Docker-Load]] — 镜像导入命令
## Related Entities
- [[Navidrome]] — 音乐流媒体服务使用 Docker 卷存储音乐文件和数据库
- [[群晖 NAS]] — 网络存储作为 Docker 卷备份的目标位置
- [[Portainer]] — Docker 可视化管理工具,通过 Web UI 查看/管理卷Portainer 重装前可通过 `docker volume ls | grep portainer` 查找 `portainer_data` 卷,删除前需确认是否需要保留数据
## Best Practices
1. **数据库一致性**: 使用 mysqldump 而非直接复制
2. **定期快照**: 结合 LVM/ZFS 快照实现应用一致性
3. **增量同步**: rsync 仅传输变更的卷数据
4. **备份验证**: 定期测试从备份恢复的可行性
## See Also
- [[Disaster-Recovery]] — Docker 卷备份是灾备策略的核心
- [[RTO]] — 恢复时间目标受备份策略影响
- [[RPO]] — 恢复点目标由备份频率决定