在 Linux 中,**mount 绑定(bind mount)**可以把一个目录(或文件)挂载到另一个位置,使其在两个路径下都能访问。
mount --bind /源目录 /目标目录
示例:
mkdir -p /mnt/data
mount --bind /home/user/data /mnt/data
之后:
/home/user/data/mnt/data指向同一份数据
mount | grep bind
或
cat /proc/mounts | grep bind
umount /mnt/data
mount --bind /etc/nginx/nginx.conf /opt/nginx/nginx.conf
⚠️ 注意:
mount --bind /src /dst
mount -o remount,ro /dst
或用 mount 一次完成(某些发行版支持):
mount --bind -o ro /src /dst
格式:
/源目录 /目标目录 none bind 0 0
示例:
/home/user/data /mnt/data none bind 0 0
只读:
/home/user/data /mnt/data none bind,ro 0 0
✅ 容器/服务访问宿主机目录
✅ chroot 环境共享目录
✅ 日志、配置统一管理
✅ 临时暴露只读目录
| 对比项 | bind mount | 软链接 |
|---|---|---|
| 跨文件系统 | ✅ | ✅ |
| 程序看到的是真实路径 | ❌(看到的是挂载点) | ✅ |
| 权限/挂载控制 | ✅ | ❌ |
| 容器内可用 | ✅ | ⚠️ 有限 |
如果你有 Docker / LXC / systemd / 特定发行版 场景,我可以给你更针对性的示例。