我对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
与on on上的相同。主人。但是,分区容量和使用情况是相同的,所以我在这里感到困惑。
问题2 :为什么容器的根目录使用率如此之高?码头图像上没有太多东西。
感谢您的帮助。
加成
Dockerfile有一行
VOLUME /var/lib/cassandra
答案 0 :(得分:3)
主机上的问题1:为什么sdc6安装在主机和容器之间的不同位置?
/dev/sdc6
为/var
,这是/var/lib/docker
所在的位置,Docker会保留某些数据,例如分配给您的容器的hosts
文件。
hosts
文件在容器内公开为绑定装载,这就是您看到的原因:
/dev/sdc6 19G 13G 5.3G 70% /etc/hosts
问题2:为什么容器的根目录使用率如此之高?码头图像上没有太多东西。
查看容器内的df
输出:
rootfs 19G 13G 5.3G 70% /
现在查看主机上的df
输出,您会看到:
/dev/sdc6 19G 13G 5.3G 70% /var
容器内的df
反映了主机文件系统的状态。这表明您正在使用aufs
或overlay
存储驱动程序,这两个驱动程序都在主机文件系统之上为容器创建“覆盖”文件系统。如果您使用df
存储驱动程序,则devicemapper
的输出会有所不同,依赖于设备映射器块设备而不是覆盖文件系统。