# 卷（Volumes）概念与使用

URL: https://caijiao.org/docker/storage/volumes
Source: docs/docker/storage/volumes.md
Description: 本章节介绍 Docker 卷（Volumes）的概念、创建方法和使用场景，包括数据持久化、共享和备份技巧，帮助开发者安全高效地管理容器数据。

Docker 卷（Volumes）是容器外部的数据存储机制，用于持久化和共享容器数据，独立于容器生命周期。

## 1. 卷的特点

- 数据与容器生命周期分离，容器删除后卷仍然存在
- 可在多个容器间共享
- 由 Docker 管理，路径位于宿主机 `/var/lib/docker/volumes`
- 提供更好的性能和安全性，相比 bind mount 更推荐用于生产环境

## 2. 创建卷

```bash
# 创建命名卷
docker volume create myvolume

# 查看卷列表
docker volume ls

# 查看卷详细信息
docker volume inspect myvolume
````

## 3. 使用卷挂载数据

### 3.1 运行容器时挂载卷

```bash
docker run -d -v myvolume:/app/data myapp
```

- `/app/data`：容器内的挂载路径
- `myvolume`：已创建的 Docker 卷

### 3.2 挂载多个卷

```bash
docker run -d \
  -v volume1:/app/data1 \
  -v volume2:/app/data2 \
  myapp
```

## 4. 卷的用途

- 持久化数据库数据
- 存储应用日志和配置文件
- 多容器共享数据
- 快速备份和迁移数据

## 5. 卷管理命令

- 删除卷（仅删除未使用的卷）：

```bash
docker volume rm myvolume
```

- 清理未使用卷：

```bash
docker volume prune
```

## 6. 最佳实践

- 尽量使用命名卷而非匿名卷，便于管理
- 对重要数据定期备份
- 避免直接修改宿主机卷目录内容，避免破坏容器数据完整性
- 配合 Docker Compose 管理卷，实现多服务数据共享

---

掌握 Docker 卷的使用方法，可以有效实现容器数据持久化、共享和安全管理，提高生产环境的可靠性。
