Docker 命令 之 数据卷(Volume)
摘要
-
本文介绍 Docker 命令 中 数据卷管理 相关命令
什么是Volume(数据卷)?
-
Volume 是由 Docker 管理的特殊目录,位于宿主机文件系统中(
/var/lib/docker/volumes/
),用于存储和共享容器的数据。 -
当容器被删除后,容器内的文件系统也会一起删除,但挂载在 Volume 中的数据不会丢失,可供多个容器共享。
-
Volume 的特点
特性 | 说明 |
---|---|
数据持久化 | 即使容器删除,数据仍保留在卷中 |
多容器共享访问 | 多个容器可以挂载同一个卷,实现数据共享 |
不依赖容器路径 | 卷与容器生命周期解耦,支持灵活的容器重建和升级 |
管理简便 | 可用 docker volume 命令进行查看、创建、删除等操作 |
安全隔离 | Docker 管理的路径比绑定挂载更安全 |
docker volume
相关命令
命令 | 作用说明 | 示例 |
---|---|---|
docker volume create |
创建一个新的卷,名称可选(不指定会自动生成) | docker volume create myvolume |
docker volume ls |
列出所有已存在的卷 | docker volume ls |
docker volume inspect <name> |
查看指定卷的详细信息,包括挂载点、驱动等 | docker volume inspect myvolume |
docker volume rm <name> |
删除一个卷(前提是没有容器正在使用该卷) | docker volume rm myvolume |
docker volume prune |
删除所有未被使用的卷(会有确认提示) | docker volume prune |
docker volume create
: 创建一个新的卷
-
语法
1 | docker volume create [OPTIONS] [VOLUME] |
-
参数详解
选项 | 说明 | 示例 |
---|---|---|
-d, --driver string |
指定卷驱动程序,默认是 local (本地存储) |
-d local 或 第三方驱动名称(需要安装第三方插件) |
--label list |
给卷添加标签(元数据),可用于分类、过滤 | --label env=prod |
-o, --opt map |
设置驱动的特定选项,格式为 key=value ,多个选项可重复使用 |
-o type=tmpfs -o device=tmpfs |
-
示例
1 | # 创建一个默认卷(local 驱动) |
-
创建的数据卷会保存在
/var/lib/docker/volumes/
目录下,比如我们创建了一个卷 myvolume,那么该卷会保存在/var/lib/docker/volumes/myvolume/_data
目录下
docker volume ls
: 列出所有已存在的卷
1 | # 列出所有卷 |
docker volume inspect <name>
: 查看指定卷的详细信息
1 | # 列出指定卷的详细信息 |
docker volume prune
: 删除所有未被容器使用的卷
1 | # 删除所有未被使用的匿名数据卷,会提示确认 |
-
匿名卷 vs 命名卷
- 匿名卷:没有名称,只在
docker run -v /container/path
时自动创建; - 命名卷:有名称,例如
docker run -v mydata:/container/path
;
- 匿名卷:没有名称,只在
docker volume rm <name>
: 删除数据卷
1 | # 删除指定数据卷 |