当检查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
您的实际主机有sda1
、sda2
和sda3
,而您的 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 容器的人也可以访问物理主机,所以我认为这不是一个大问题。