数据卷管理
一、数据卷和绑定挂载的区别
1.1 数据卷(docker volume)
- 存储位置:
/var/lib/docker/volumes/ - 特点:
- 持久化:容器删除后数据仍保留。
- 高性能:适合频繁读写。
- 易于管理:通过 Docker 命令创建、备份和迁移。
- 适用场景:数据库、共享数据、持久化存储。
1.2 绑定挂载(docker run -v)
- 存储位置:主机指定的路径。
- 特点:
- 直接访问主机文件:容器可读写主机文件。
- 灵活性高:适合挂载任意主机目录或文件。
- 依赖主机权限:需确保主机路径权限正确。
- 适用场景:开发环境、挂载配置文件、直接访问主机文件。
二、docker volume 命令用法
| 命令 | 说明 |
|---|---|
docker volume create <volume_name> | 创建一个数据卷。 |
docker volume ls | 列出所有数据卷。 |
docker volume inspect <volume_name> | 查看数据卷的详细信息。 |
docker run -v <volume_name>:<path> | 启动容器并挂载数据卷到指定路径。 |
docker volume rm <volume_name> | 删除指定的数据卷。 |
docker volume prune | 删除所有未使用的数据卷。 |
| 绑定挂载命令用法 | |
docker run -v <host_path>:<container_path> | 启动容器并挂载主机目录到容器路径。 |
三、 示例 创建数据卷
-
创建默认数据卷
bash# 指定名字
ubuntu@www.zxzsk.com:~$ docker volume create my_volume
my_volume -
创建匿名数据卷
bash# 不指定名字
ubuntu@www.zxzsk.com:~$ docker volume create
8fc4a7d5d333e2addff8d6c859064b93daf9715d4352d9b03837ea6389d93f26 -
指定驱动类型
bash# local(默认)
docker volume create --driver local my_volume2 -
添加标签
bash# 创建一个数据卷并添加标签(如 env=prod)
docker volume create --label env=prod my_volume3 -
指定驱动选项
bash# 创建一个数据 卷并指定驱动选项(如设置文件系统类型为 tmpfs)
ubuntu@www.zxzsk.com:~$ docker volume create --opt type=tmpfs --opt device=tmpfs my_volume4
my_volume4
四、示例 查看数据卷
查看 volume 目录
bash
# 列出数据卷
root@www:/home/ubuntu# ls /var/lib/docker/volumes/
8fc4a7d5d333e2addff8d6c859064b93daf9715d4352d9b03837ea6389d93f26/
backingFsBlockDev
metadata.db
my_volume/
my_volume2/
my_volume3/
my_volume4/
# 更详细
root@www:/home/ubuntu# tree /var/lib/docker/volumes/
/var/lib/docker/volumes/
├── 8fc4a7d5d333e2addff8d6c859064b93daf9715d4352d9b03837ea6389d93f26
│ └── _data
├── backingFsBlockDev
├── metadata.db