为什么docker容器能够检查主机的文件系统?

为什么docker容器能够检查主机的文件系统?

当检查docker容器的文件系统时,我曾经df -h从容器的角度检查文件系统:

$ docker run -it busybox sh 
/ # df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                  97.8G     78.7G     14.1G  85% /
tmpfs                    64.0M         0     64.0M   0% /dev
tmpfs                     7.8G         0      7.8G   0% /sys/fs/cgroup
/dev/sda2                97.8G     78.7G     14.1G  85% /etc/resolv.conf
/dev/sda2                97.8G     78.7G     14.1G  85% /etc/hostname
/dev/sda2                97.8G     78.7G     14.1G  85% /etc/hosts
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                    64.0M         0     64.0M   0% /proc/kcore
tmpfs                    64.0M         0     64.0M   0% /proc/timer_list
tmpfs                    64.0M         0     64.0M   0% /proc/sched_debug
tmpfs                     7.8G         0      7.8G   0% /proc/scsi
tmpfs                     7.8G         0      7.8G   0% /sys/firmware

df -h当我在实际主机上运行时看到的是:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.8G     0  7.8G   0% /dev
tmpfs           1.6G  9.6M  1.6G   1% /run
/dev/sda2        98G   79G   15G  85% /
tmpfs           7.8G   82M  7.8G   2% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda3       108G   34G   75G  31% /dev/sda5
/dev/sda1       511M   32M  480M   7% /boot/efi
tmpfs           1.6G   56K  1.6G   1% /run/user/1000

docker 引擎在容器中挂载了其他额外的文件系统,这并不奇怪,但是,我没想到容器能够看到 /dev/sda2 及其用法。您能解释一下这种行为吗,因为我没有附加任何卷?我预计容器会对主机有一个独立的视图,不会“看到”它的某些文件系统。

答案1

您的实际主机有sda1sda2sda3,而您的 docker 实例只有sda2。它们的安装方式也不同。对于您的 docker 实例:

/dev/sda2                97.8G     78.7G     14.1G  85% /etc/resolv.conf
/dev/sda2                97.8G     78.7G     14.1G  85% /etc/hostname
/dev/sda2                97.8G     78.7G     14.1G  85% /etc/hosts

对于您的实际主机:

/dev/sda1       511M   32M  480M   7% /boot/efi
/dev/sda2        98G   79G   15G  85% /
/dev/sda3       108G   34G   75G  31% /dev/sda5

编辑:

最后,它们的使用价值差别很大。它们显然是不同的设备。

使用值匹配sda2。也许这是无法避免的。据我所知,Doker 并不是为多租户创建的(例如为第三方托管服务),而更多的是按照 DevOps 的方式,维护 docker 容器的人也可以访问物理主机,所以我认为这不是一个大问题。

相关内容