首页/云/Docker 容器速查/docker run -v 挂载数据卷与宿主目录
网络与存储52 条

docker run -v 挂载数据卷与宿主目录

最常用的挂载写法:-v 源:目标[:选项],源是名称时用卷、是路径时用绑定挂载;冒号后半段为容器内路径。

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

-v 挂载是什么

挂载选项把宿主机的目录或数据卷接到容器内的路径上,写法是源、目标与权限选项三段。源写成名称时使用由 Docker 管理的卷,写成路径时是绑定挂载,直接映射宿主目录。它是容器数据能不能留下来的关键:没挂出来的数据都躺在可写层里,容器一删就没了。

基本信息

语法-v 源:目标路径[:权限选项]
权限选项ro 只读,rw 可读写(默认)
省略源只写容器内路径时自动创建匿名卷
卷与绑定的区分源不是绝对路径即为卷,是绝对路径即为宿主目录绑定
适用平台Linux 与 macOS 常规使用;Windows 路径含冒号,建议改用 --mount 写法

典型使用场景

  • 数据库持久化:把数据目录挂到卷上,容器重建后数据仍在
  • 配置注入:把宿主上的配置文件挂进容器,改动后重启即生效
  • 静态资源目录:把前端产物目录只读挂给 Web 服务,避免容器内被改写
  • 开发调试:把源码目录挂进容器,改代码立即生效,省去反复构建镜像
  • 临时目录隔离:需要落盘的临时数据挂到独立目录,便于清理与容量控制

常用示例

常用示例
docker run -d -v pgdata:/var/lib/postgresql/data --name db postgres:16-alpine  # 卷持久化
docker run -d -v /srv/www:/usr/share/nginx/html:ro --name web nginx:1.27-alpine  # 只读映射
docker run --rm -v $PWD/config.yml:/etc/app/config.yml:ro app/web:1.0  # 单文件只读挂载
docker run --rm -v $PWD:/work -w /work golang:1.23 go test ./...     # 开发时挂源码
ls -ld /srv/www                                                      # 确认宿主目录属主与权限

卷与绑定挂载对照

对比项数据卷宿主目录绑定
源写法名称,例如数据库数据卷绝对路径,例如主机上的站点目录
管理者由容器引擎管理,位置固定在数据根目录下完全由使用者维护
典型用途数据库、消息队列等有状态服务的数据配置文件、源码目录、静态资源
备份方式通过卷导出或容器内归档直接在宿主目录上备份
可移植性随编排文件一起迁移更方便依赖宿主目录结构与权限

挂载之后要验证的事

  • 确认容器内看到的内容与宿主一致,避免挂到了空目录却以为配置生效
  • 核对属主与权限:容器内进程用户能否读写,只读挂载是否挡住了必要的写入
  • 检查是否随容器自启生效,编排文件里的挂载与手写命令要一致
  • 确认数据真的落在挂载目录里,可写层里的数据删容器即丢失
  • 规划容量:数据目录所在分区要留足空间,写满会同时影响容器与宿主
宿主路径不存在时会被自动创建成目录。本意是挂单个文件时尤其容易踩坑:容器里出现一个同名目录,服务读配置直接报错。
同一份挂载配置在编排文件、部署脚本与手工命令里容易不一致,变更时三处都要核对,否则会出现「改了没生效」的错觉。

取舍建议

  • 有状态服务优先用卷:位置由引擎统一管理,迁移与备份更规整
  • 需要人工编辑的配置用宿主目录绑定,改完重启容器即可生效
  • 线上服务尽量用只读挂载,减少容器内被篡改的可能
  • 挂载路径按服务划分目录,避免多个容器写同一个位置互相覆盖
  • 关键数据目录单独分区并做容量监控,写满会同时影响容器与宿主

易错点

  • 想挂单个文件但宿主文件不存在,结果被创建成目录,应用读取配置失败且报错不直观
  • 挂载宿主目录后容器以只读方式运行,应用需要写日志或缓存时直接报权限错误
  • 把数据目录留成容器内路径没有挂出来,重建容器时业务数据一起消失
  • 宿主目录属主与容器内用户不匹配,出现明明文件存在却读不了的情况

数据来源与参考

  • Docker 官方 CLI 参考:docker run 的 -v/--volume(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌