绑定挂载(Bind mounts)
绑定挂载(Bind mounts)是将宿主机的文件或目录直接挂载到容器内的机制,使容器可以访问宿主机的数据。
1. Bind mounts 特点
- 数据存储在宿主机指定路径,容器删除不会影响宿主机文件
- 容器可以实时访问宿主机文件,适合开发和调试
- 需要注意权限和安全问题
2. 使用 bind mount
bash
docker run -d \
-v /host/path:/container/path \
myapp/host/path:宿主机目录/container/path:容器内挂载路径
示例:
bash
docker run -d \
-v /home/user/app/config:/app/config \
myapp3. 只读绑定挂载
bash
docker run -d \
-v /host/path:/container/path:ro \
myappro:只读,防止容器修改宿主机数据- 默认挂载为可读写(rw)
4. 与卷的区别
| 特性 | 卷(Volumes) | Bind Mounts |
|---|---|---|
| 数据位置 | Docker 管理 | 宿主机指定路径 |
| 生命周期 | 独立于容器 | 与宿主机目录绑定 |
| 使用场景 | 生产环境数据持久化 | 开发调试、日志挂载 |
| 性能 | 高 | 取决于宿主机文件系统 |
5. 使用注意事项
- 避免在生产环境随意挂载宿主机敏感目录
- 确保容器运行用户有访问宿主机目录权限
- 调试容器时,Bind mount 可以实现代码实时同步
- 配合 Docker Compose 管理更方便:
yaml
services:
app:
image: myapp
volumes:
- ./config:/app/config:ro绑定挂载提供了灵活的数据访问方式,非常适合开发和调试环境,但在生产环境使用需注意安全和权限管理。