1

我使用 docker 创建一个容器。当我进入容器时,我看不到过载相关的挂载。这个是正常的,

root@django-work:~/test# docker run -it ubuntu /bin/bash
root@52110483ac09:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
overlay          49G   17G   30G  36% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda3        49G   17G   30G  36% /etc/hosts
tmpfs           3.9G     0  3.9G   0% /proc/asound
tmpfs           3.9G     0  3.9G   0% /proc/acpi
tmpfs           3.9G     0  3.9G   0% /proc/scsi
tmpfs           3.9G     0  3.9G   0% /sys/firmware
root@52110483ac09:/# 

但是为什么我通过unshare创建PID命名空间和挂载命名空间的时候能看到完整的挂载信息

root@django-work:~# df -h 
tmpfs           793M  2.0M  791M    1% /run
/dev/sda3        49G   17G   30G   36% /
tmpfs           3.9G   32M  3.9G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           4.0M     0  4.0M    0% /sys/fs/cgroup
/dev/sda2       512M  5.3M  507M    2% /boot/efi
tmpfs           793M  5.8M  787M    1% /run/user/1000
overlay          49G   17G   30G   36% /var/lib/docker/overlay2/dddc4d45086e3b814fe5589af09becc35cfa7cf4cce1a8fc82a930fba94a70ed/merged
root@django-work:~# unshare --pid --fork --mount-proc /bin/bash
root@django-work:~# df -h 
/dev/sda3        49G   17G   30G   36% /
tmpfs           3.9G   32M  3.9G    1% /dev/shm
tmpfs           793M  2.0M  791M    1% /run
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           793M  5.8M  787M    1% /run/user/1000
tmpfs           4.0M     0  4.0M    0% /sys/fs/cgroup
/dev/sda2       512M  5.3M  507M    2% /boot/efi
overlay          49G   17G   30G   36% /var/lib/docker/overlay2/dddc4d45086e3b814fe5589af09becc35cfa7cf4cce1a8fc82a930fba94a70ed/merged
root@django-work:~# 
4

1 回答 1

0

从手册页mount_namespaces

如果命名空间是使用 unshare(2) 创建的,则新命名空间的挂载列表是调用者先前挂载命名空间中的挂载列表的副本。

您会看到相同的输出,因为当unshare您最初获得安装列表的副本时。但是,如果您在任一命名空间中进行任何更改,这些更改在另一个命名空间中将不可见。

于 2022-02-01T13:58:44.150 回答