我目前正在研究 Docker 的工作原理。据我所知,Docker 不能启动,它只是在一个非常 chroot 的环境中启动一个进程。但是当我查看一些文档时,有人提到 Docker 有一个 bootfs。这是一个文件系统,只在启动时挂载,并在 rootfs 挂载后卸载(我猜)。但是你看不见也摸不着。我什至找不到它。
Docker 使用某种 bootfs 仍然是真的吗?例如,这些文章让我感到困惑:http : //collabnix.com/understanding-docker-container-image/。它有带有内核和 cgroup 的 bootfs。但据我所知,内核在 Docker 之外,它是主机系统的一部分。
我的主要问题是,Docker 使用 bootfs 来“启动”容器是否仍然正确?而且,我在哪里可以看到那个文件系统?
我想你可能已经发现了一些误导性的民间传说。我在 Google 站点上搜索了“bootfs”(即site:docker.com bootfs),但几乎一无所获——实际上是四个结果。我搜索了这四个结果中的每一个,我将描述我的发现。
这描述了图像和容器的结构以及它们与存储驱动程序的关系。字符串“bootfs”未出现在此页面上。字符串“boot”也没有。
本文档从安全角度描述了 Docker 容器实现。字符串“bootfs”只出现一次——在一个图中它似乎是指主机的引导文件系统。
在这个论坛讨论中,字符串“bootfs”恰好出现了一次 - 再次参考主机,而不是容器。
此处字符串在各种包名称中显示为子字符串。没有迹象表明它与启动 Docker 容器有关。
我还搜索了Docker CE GitHub,但没有找到任何字符串“bootfs”的实例。
在 Google 对“docker bootfs 位置”和“docker bootfs 在哪里”进行了多次 Google 搜索后,我发现了几个结果,这些结果似乎表明存在于容器级别的 Docker bootfs 的想法是用词不当。以下是几个这样的结果:
这篇博文详细描述了 Docker 启动过程,并将其与典型的启动过程区分开来。
在本期讨论中,一位贡献者将 bootfs 称为“你无法触及”的“概念”。