我运行一个简单的docker容器sudo docker run -it ubuntu:latest /bin/bash
当我使用df -h
以下命令检查已安装的文件系统时:
Filesystem Size Used Avail Use% Mounted on
overlay 63G 4.3G 56G 8% /
tmpfs 64M 0 64M 0% /dev
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/sda1 63G 4.3G 56G 8% /etc/hosts
....
我无法理解最后一行,即,当我在主机上/dev/sda1 -> /etc/hosts
运行时,我得到了挂载。df -h
/dev/sda1 -> /
那么/dev/sda1
实际上我的硬盘是这样的,为什么它被挂载到/etc/hosts
容器上,以及/etc/hosts
容器上怎么会有一个具有正确内容的文件。
有没有解释一下这里发生了什么?这是如何运作的?
编辑:findmnt 的相关输出:
`-/etc/hosts /dev/sda1[/lib/docker/containers/b18928987f05513ea9fcc9bd630e9efb0f92e51f48afd215426ba4cd83967fc1/hosts]
ext4 rw,relatime,data=ordered
答案1
Linux 允许安装(捆绑) 在多个路径上绑定同一个文件系统,它还允许将现有目录绑定到另一个目录,或将文件绑定到另一个文件。
这与符号链接类似,但可以跨越容器或 chroot 边界——如果主机中的文件已绑定到容器内的文件上,则容器仍然可以访问它。
自由度仅显示设备,因为它以旧的“mtab”格式读取挂载信息,而这种格式没有足够的信息。(不过,对于目录绑定挂载,它仍然有意义。)