一、疑问
熟悉 Linux 系统的朋友应该知道,我们在安装操作系统时(如:CentOS),一般 ISO 镜像都是好几个 GB 的大小,而在我们的容器环境里面,运行一个 CentOS 大概就 200MB 左右的大小,这是为什么呢?
二、解答
我们的 Linux 系统由内核空间和用户空间构成,其中 bootfs 为系统内核空间文件系统,rootfs 为系统用户空间文件系统。Linux 系统在启动时会加载 bootfs 文件系统,之后 bootfs 会被卸载掉。用户空间文件系统 rootfs,其包含的是一些 /opt、/dev、/bin 等目录。
对于容器的镜像来说,底层直接使用宿主机的内核空间,其只需提供用户空间 rootfs 文件系统即可。因此,对于一个精简的操作系统(如:CentOS)来说,rootfs 文件系统是可以很小的,因为它只需提供一些基础命令、相关库文件即可。而一个标准的 OS 镜像是需要具备所有运行条件的(各类命令、工具、文件系统等),否则安装的操作系统也是不可用的。
所以,这就是为什么运行一个 CentOS 容器的镜像只需 200MB 左右,而安装一个完整的 OS 系统则需好几个 GB 大小的原因。