全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

绑定挂载数据卷

绑定挂载(Bind Mount)将宿主机目录直接挂载到容器,下面介绍使用方法。

基本用法

Bash
# 挂载宿主机目录到容器
docker run -d -v /host/path:/container/path nginx

# 绝对路径
docker run -d -v /home/user/data:/app/data nginx

# 相对路径(相对于当前工作目录)
docker run -d -v ./data:/app/data nginx

常见场景

配置文件挂载

Bash
# 挂载 Nginx 配置
docker run -d \
  -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  -v /etc/nginx/conf.d:/etc/nginx/conf.d:ro \
  -p 80:80 \
  nginx

# 挂载 MySQL 配置
docker run -d \
  -v /etc/mysql/my.cnf:/etc/mysql/my.cnf:ro \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

代码开发挂载

Bash
# 开发时挂载代码(热更新)
docker run -d \
  -v $(pwd):/app \
  -p 3000:3000 \
  node:18 npm start

# 修改宿主机代码,容器内立即生效

数据持久化

Bash
# MySQL 数据持久化
docker run -d \
  -v /data/mysql:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

# 删除容器后,/data/mysql 数据仍然存在

绑定挂载 vs 命名卷

对比项绑定挂载命名卷
存储位置宿主机指定目录Docker 管理目录
路径控制用户控制Docker 控制
适用场景开发、配置挂载数据持久化、多容器共享
性能依赖宿主机文件系统优化过,性能更好
移植性依赖宿主机路径跨平台,移植性强

开发环境常用绑定挂载,生产数据持久化推荐命名卷。

自动创建

Bash
# 宿主机目录不存在时会自动创建
docker run -d -v /host/new-dir:/container/dir nginx

# 但新创建目录的属主是 root
# 如果容器以非 root 用户运行,可能需要调整权限

查看挂载

Bash
# 查看容器挂载信息
docker inspect my-nginx | grep -A 10 "Mounts"

# 输出
"Mounts": [
    {
        "Type": "bind",
        "Source": "/host/path",
        "Destination": "/container/path",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
]

要点总结

  • -v /宿主机路径:/容器路径 绑定挂载宿主机目录
  • 配置文件建议 :ro 只读挂载,防止容器内误修改
  • 开发环境挂载代码实现热更新,修改宿主机立即生效
  • 数据持久化挂载宿主机目录,删除容器数据不丢失
  • 绑定挂载依赖宿主机路径,移植性不如命名卷

📝 发现内容有误?点击此处直接编辑

← 上一篇 端口映射配置
下一篇 → Dockerfile 语法结构
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库