核心是用-v参数建立双向实时映射:docker run -v /宿主机绝对路径:/容器内路径 镜像名,支持多挂载、读写控制(:ro/:rw)及SELinux适配,区别于Docker管理的命名卷。

创建容器时挂载宿主机目录,核心是用 -v 参数建立双向实时映射。只要宿主机目录存在、路径写对、权限合理,容器一启动,两边文件就自动同步——改一边,另一边立刻可见。
挂载命令怎么写
基础语法很简单:
docker run -v /宿主机绝对路径:/容器内路径 镜像名- 比如把本地
/home/user/app挂到容器的/app:docker run -v /home/user/app:/app nginx - 支持多个挂载,用多个
-v连续写:docker run -v /conf:/etc/nginx/conf.d -v /logs:/var/log/nginx nginx
读写控制与安全细节
默认挂载是读写(rw),但可根据需要显式限定:
- 只读挂载(防止容器意外改坏配置):
-v /host/config:/etc/myapp/config:ro - 确保宿主机目标目录已存在,Docker 不会自动创建父级路径
- Linux 上若遇权限拒绝(尤其 CentOS/SELinux 环境),可加
--privileged或在挂载后加:z(如:/data:z)让 SELinux 自动打标签
挂载后数据怎么同步
不是“定时拷贝”,而是内核级文件系统绑定,效果等同于同一份数据有两个入口:
- 你在宿主机
/home/data/a.txt里新增一行,进容器/data/a.txt立刻能看到 - 容器里程序往
/data/写日志,宿主机对应目录实时生成或追加 - 删除、重命名、修改权限等所有操作都即时双向生效
和命名卷(volume)有什么区别
绑定挂载(-v /host:/container)直接连宿主机路径,适合开发调试、配置管理;命名卷(docker volume create + -v vol_name:/path)由 Docker 管理,路径隐藏、跨平台兼容性好,更适合生产环境数据库等有状态服务。


















