在 Debian(以及一般的 Linux)里,“共享挂载(shared mount)”通常指的是 mount 命名空间中的挂载传播(mount propagation),而不是 NFS/Samba 网络共享。
下面分三种常见场景说明。
在 Linux 中,挂载点可以设置 传播类型:
private:默认,挂载不会传播shared:在一个挂载点下的挂载,会传播到其他命名空间slave:只接收,不发送unbindable:不能重复挂载“共享挂载”一般指的是 shared 类型。
findmnt -o TARGET,PROPAGATION
或:
mount | grep shared
mount --make-shared /mnt/data
验证:
findmnt -o TARGET,PROPAGATION /mnt/data
mount --bind --make-shared /source /mnt/data
让宿主机挂载在容器内也可见:
mount --make-shared /
mount --make-shared /mnt/data
然后容器中使用:
docker run -v /mnt/data:/data:shared ...
在 Debian 使用 systemd 时,可在 /etc/fstab 中设置:
/dev/sdb1 /mnt/data ext4 defaults,shared 0 2
或:
/mnt/data /mnt/data none bind,shared 0 0
如果你其实是想:
Server:
apt install nfs-kernel-server
echo "/srv/nfs *(rw,sync,no_subtree_check)" >> /etc/exports
exportfs -a
Client:
mount server:/srv/nfs /mnt/nfs
apt install samba
| 需求 | 做法 |
|---|---|
| 挂载在命名空间间共享 | mount --make-shared |
| 容器可见宿主挂载 | shared + volume |
| 网络共享 | NFS / Samba |
| 永久生效 | fstab + systemd |
如果你能说明:
我可以给你更精确的命令。