为什么 mongo 的官方 docker 镜像不使用 XFS,然后警告不要使用它?

为什么 mongo 的官方 docker 镜像不使用 XFS,然后警告不要使用它?

根据官方文档,带有 WiredTiger 的 MongoDB 应该在具有 XFS 文件系统的 Linux 上运行。然而,mongo 的官方 docker 镜像使用的是 ext4,这意味着每当我们启动容器时都会收到警告:

Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem"

那么为什么官方的docker镜像不使用XFS呢? 这是一个无关紧要的问题吗?

答案1

完整答案。

Docker 镜像没有文件系统。Docker 镜像是一堆tar文件,每个文件代表一个层,外加一些带有镜像元数据的 JSON 文件。当将 Docker 镜像拉入主机时,这些文件会被解压到主机文件系统中,通常在 下/var/lib/docker。当 Docker 容器启动时,这些层会使用 OverlayFS 挂载到容器内,OverlayFS 是一种联合 FS,允许将具有不同镜像层的不同文件系统子目录组合成一个虚拟文件系统。如果有卷,则它们会被绑定挂载,在容器内,您会将它们视为主机上的原始文件系统/var/lib/docker(除非tmpfs使用 )。

因此,镜像作者无法控制它将在哪个 FS 上运行。如果您想使用特定的文件系统(例如XFS在容器内),那么要么在使用此 FS 的系统上运行它,/var/lib/docker要么将单独的 FS 绑定安装到容器中。在 Mac 或 Windows 上不起作用,因为这些系统上的 Docker Desktop 使用内部 VM 来运行容器,我认为不可能修改此 VM 的 FS。

相关内容