UnionFs(联合文件系统)
我们下载的时候看到的一层层就是这个!
- Unionfs(联合文件系统):Union文件系统(Unionfs)是一种分层、轻量级井且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的疊加,同时可以将不同目录挂载到同一个虚拟文件系统下( unite several directories into a single virtual filesystem)Union文件系统是Docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
- 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统加起来,这样最终的文件系统会包含所有底层的文件和目录
Docker镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统 Unionfs
- bootfs(boot file system)主要包含bootloader和kernel,bootloader.主要是引导加载 kernel, Linux刚启动时会加载 boots文件系统,在Docker镜像的最底层是 bootfs.这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由 bootfs转交给内核,此时系统也会卸载 boots.
- rootfs( (root file system),在 boots.之上。包含的就是典型 Linux系统中的/dew, /proc,/bin,/etc等标准目录和文件。 roots就是
各种不同的操作系统发行版,比如 Ubuntu, Centos等等
对于一个精简的OS, rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用Host的 kernel,自己只需要提供 rootfs就可以了。由此可见对于不同的inux发行版, boots基本是一致的,rootfs:会有差别,因此不同的发行版可以公用boots
特点
Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!
这一层就是我们通常说的容器层,容器之下的都叫镜像层!