在Docker容器中将/ dev / sda1挂载到/ etc / hosts是什么意思

在Docker容器中将/ dev / sda1挂载到/ etc / hosts是什么意思

我运行一个简单的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”格式读取挂载信息,而这种格式没有足够的信息。(不过,对于目录绑定挂载,它仍然有意义。)

相关内容