docker volume create是创建命名数据卷的标准命令,支持指定名称、--label标签、--driver驱动等参数,默认使用local驱动并存储于/var/lib/docker/volumes/下,需配合-v或--mount挂载至容器才生效。
创建命名数据卷是 docker 数据持久化的标准做法,核心就一条命令:docker volume create,配合明确的名称和可选参数即可完成。
直接创建命名卷
最基础也最常用的方式是用 docker volume create 加上自定义名称:
-
docker volume create mysql-data→ 创建名为mysql-data的卷,Docker 自动分配存储路径 -
docker volume create app-logs→ 创建用于日志的命名卷,语义清晰、便于管理
命名卷默认使用 local 驱动,适合绝大多数场景,比如数据库、缓存、应用状态等需要长期保留的数据。
带选项创建(按需使用)
如需控制行为,可在创建时加入参数:
-
--label key=value:添加标签,方便后续筛选,例如--label env=prod -
--driver local:显式指定驱动(通常省略,默认就是 local) -
--opt o=uid=1001,gid=1001:设置宿主机挂载目录权限(仅 local 驱动支持)
注意:--size 或 --read-only 等参数不适用于 local 驱动,它们只在特定插件驱动(如 NFS、云存储)中生效。
验证与确认
创建后建议立即检查,确保卷已就绪:
-
docker volume ls→ 查看所有卷,确认名字出现在列表中 -
docker volume inspect mysql-data→ 查看详细信息,重点关注Mountpoint字段,它显示宿主机上的真实路径(如/var/lib/docker/volumes/mysql-data/_data)
这个路径就是数据实际落盘的位置,容器重启、重建甚至重装 Docker 都不会影响其中内容。
挂载到容器才算真正启用
光创建卷还不够,必须在运行容器时挂载才能生效:
- 用
-v方式:docker run -d -v mysql-data:/var/lib/mysql --name db mysql:8.0 - 用
--mount方式(更明确):docker run -d --mount source=mysql-data,target=/var/lib/mysql --name db mysql:8.0
两种写法效果一致,但 --mount 更利于复杂配置(如只读、一致性选项),推荐新项目优先使用。


















