1.镜像是什么?
轻量级且可独立执行的软件包,用于打包运行环境和基于运行环境开发的软件。它包含运行某个软件所需的一切,包括代码、环境变量和配置文件。
联合文件系统
联邦文件系统是一个分层、轻量级和高性能的文件系统。它支持一次提交覆盖文件系统修改,可以在一个虚拟文件系统下挂载不同的目录。联合文件系统是docker镜像的基础。镜像可以通过分层继承。基于基本镜像,可以创建各种其他应用场景。
特征:
多个文件系统同时加载,但外部似乎只有一个文件系统。联合加载将堆叠每一层的文件系统,这样最终的文件系统将包含所有底层文件和目录。
2.docker映像的加载原理
Docker的映像实际上由一个逐层的文件系统组成,这就是UniosFS。
Bootfs(引导文件系统)主要包括引导加载程序和内核。BootLoader主要加载内核。当Linux启动时,它将加载bootfs文件系统。在docker映像的底部,是bootfs。这一层与我们典型的linux相同,包括引导加载程序和内核。加载引导时,整个内核都在内存中。此时,内存的使用权已经从bootfs转移到内核。此时,系统也会卸载bootfs。
Rootfs(根文件系统)位于bootfs之上,包含典型linux系统中的目录和文件,如/dev、/proc、/dydbl、/等。Rootfs是各种操作系统的分布,比如ubunto、centos等等。
对于精简的OS,rootfs可以很小,只需要包含最基本的命令、工具和程序,因为底层直接使用主机的内核,只需要提供bootfs。可以看到不同的linux发行版中bootfs基本相同,rootfs也不同,所以不同的发型版本可以共享bootfs。
这就解释了为什么centos docker只有2亿。