我对Docker相对较新,当我启动容器(ubuntu基本映像)时,我注意到以下内容:
在主机上
$df -h
...
/dev/sdc1 180M 98M 70M 59% /boot
/dev/sdc2 46G 20G 24G 46% /home
/dev/sdc5 37G 7.7G 27G 23% /usr
/dev/sdc6 19G 13G 5.3G 70% /var
$lsblk
...
sdc 8:32 0 232.9G 0 disk
├─sdc1 8:33 0 190M 0 part /boot
├─sdc2 8:34 0 46.6G 0 part /home
├─sdc3 8:35 0 18.6G 0 part /
├─sdc4 8:36 0 1K 0 part
├─sdc5 8:37 0 37.3G 0 part /usr
├─sdc6 8:38 0 18.6G 0 part /var
├─sdc7 8:39 0 29.8G 0 part [SWAP]
└─sdc8 8:40 0 42.8G 0 part
在容器上
$df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 19G 13G 5.3G 70% /
none 19G 13G 5.3G 70% /
tmpfs 7.8G 0 7.8G 0% /dev
shm 64M 0 64M 0% /dev/shm
/dev/sdc6 19G 13G 5.3G 70% /etc/hosts
tmpfs 7.8G 0 7.8G 0% /proc/kcore
tmpfs 7.8G 0 7.8G 0% /proc/latency_stats
tmpfs 7.8G 0 7.8G 0% /proc/timer_stats
$lsblk
sdc 8:32 0 232.9G 0 disk
|-sdc1 8:33 0 190M 0 part
|-sdc2 8:34 0 46.6G 0 part
|-sdc3 8:35 0 18.6G 0 part
|-sdc4 8:36 0 1K 0 part
|-sdc5 8:37 0 37.3G 0 part
|-sdc6 8:38 0 18.6G 0 part /var/lib/cassandra
|-sdc7 8:39 0 29.8G 0 part [SWAP]
`-sdc8 8:40 0 42.8G 0 part
问题1:为什么将sdc6安装在主机和容器之间的不同位置?
因为两个安装点的内容不同,所以我假设docker必须在容器上完成某种设备映射,因此容器中的sdc6与主机上的sdc6不同.但是,分区容量和用法是相同的,因此我在这里感到困惑.
问题2:为什么容器的根目录使用率如此之高?泊坞窗映像上没有太多内容.
谢谢你的帮助.
加成
Dockerfile有一行
VOLUME /var/lib/cassandra
最佳答案
Question 1: why is sdc6 mounted on different places between the host and the container?
主机上的/ dev / sdc6是/ var,这是/ var / lib / docker所在的位置,并且Docker保留某些数据,例如分配给您的容器的主机文件.
主机文件在容器内作为绑定安装公开,这就是为什么您看到以下内容:
/dev/sdc6 19G 13G 5.3G 70% /etc/hosts
Question 2: why is the container’s root dir usage so high? The docker image doesn’t have much stuff on it.
看一下容器内部的df输出:
rootfs 19G 13G 5.3G 70% /
现在查看主机上的df输出,您将看到:
/dev/sdc6 19G 13G 5.3G 70% /var
容器内的df反映了主机文件系统的状态.这表明您正在使用aufs或overlay存储驱动程序,两者都为主机文件系统顶部的容器创建了“ overlay”文件系统.如果您使用devicemapper存储驱动程序,则df的输出看起来会有所不同,它依赖于设备映射器块设备而不是覆盖文件系统.