首页/云/云与容器速查/docker volume create 创建数据卷
容器与 Docker106 条

docker volume create 创建数据卷

预先创建命名数据卷,便于初始化权限、多容器共享与跨容器复用。重复创建同名卷不报错也不重置数据,这是与『重新初始化』直觉相反的关键行为。

云与容器速查云更新于 2026-10-13

docker volume create 是什么

docker volume create 用于预先创建命名数据卷。命名卷由 Docker 管理,存放在宿主机的卷目录里,与容器生命周期解耦:容器删除后卷仍然保留。它有两个容易误解的行为——重复创建同名卷不会报错也不会清空数据,而是直接返回原卷;容器首次挂载一个空命名卷时,Docker 会把镜像中该路径下已有的内容复制进卷里完成初始化。

基本信息

语法docker volume create [选项] [卷名]
驱动选项-d local;--opt type=nfs 等可挂载 NFS 或指定宿主路径
复用行为同名卷已存在时直接返回,存量数据原样保留
归属卷是独立的 Docker 对象,不属于任何容器
权限要求卷目录在宿主上通常属 root,非 root 运行容器需先处理属主

典型使用场景

  • 数据库数据目录持久化:MySQL、PostgreSQL 的数据目录必须落在卷上
  • 多个容器共享同一份配置或数据,用命名卷替代互相拷贝
  • NFS 卷让多台宿主机共享数据,适配跨节点部署的中间件
  • 把卷作为交付单元做备份与迁移:打包卷比打包容器可靠
  • 开发环境隔离数据:容器随便重建,数据始终保留在卷里

创建与使用

创建与使用
docker volume create appdata
docker run -d --name web -v appdata:/usr/share/nginx/html nginx:1.27
docker volume inspect -f "{{.Mountpoint}}" appdata   # 查看宿主上的实际路径
docker volume ls -f dangling=true   # 找出没被任何容器使用的卷,供清理前确认

NFS 类型卷示例

NFS 类型卷示例
docker volume create -d local \
  --opt type=nfs \
  --opt o=addr=10.0.0.10,rw,nfsvers=4 \
  --opt device=:/exports/data \
  nfsdata

挂载方式对比

类型创建方式适用场景
命名卷docker volume create 或自动创建持久数据,推荐方式,位置由 Docker 管理
匿名卷-v /data(不写卷名)自动生成临时数据,容易遗留成无人认领的卷
绑定挂载-v /host/path:/container/path开发环境、宿主配置文件注入
NFS 卷-d local --opt type=nfs多宿主机共享同一份数据
容器默认以 root 写入卷,宿主上的卷目录属主也是 root。用 -u 指定非 root 用户运行容器时,需要先 chown 修正属主(可以用一次性容器完成),否则报 Permission denied。
匿名卷在容器删除后不会自动清理,长期运行会慢慢占满磁盘。定期用 docker volume ls -f dangling=true 普查,但删除前要确认没有已停止的容器仍在引用该卷。

易错点

  • 以为重建同名卷会清空数据:实际沿用旧数据,测试环境常被旧状态干扰却查不出原因
  • NFS 挂载漏写 nfsvers=4(或 3):协议协商不一致导致挂载超时,或挂载成功后读写报错
  • 用 -v /data 这类不带卷名的写法,产生大量匿名卷,磁盘被逐步占满
  • 绑定挂载的宿主目录属主或 SELinux 标签不正确,容器内写入被直接拒绝

数据来源与参考

  • Docker Docs:docker volume create
  • Docker Docs:Use a volume with NFS

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌