联合文件系统
UnionFS( 联合文件系统 )是一直分层,轻量级并且高性能的文件系统,他支持对文件系统的修改作
为一次次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS是Docker
镜像的基础,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件
系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
Docker镜像加载的原理
Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFs
Bootfs(boot-file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs,这一层与我们典型的Linux/unix系统是一样的,包含boot加载器和内核,当boot加载完成之后整个内核就能在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
Rootfs(root-file system),在bootfs之上,包含的就是典型Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件,rootfs就是各种不同操作系统的发行版,比如Ubuntu,Centos等等。
对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序就可以了,因为底层
直接用宿主机的内核,自己只需要提供rootfs就可以了,因此可见,对于不用的Linux发行版,bootfs基
本是一致的,而rootfs会有差别,因此不同的发行版可以公用bootfs。
Docker为什么采用分层结构呢?
共享资源
多个镜像从相同的父镜像构建而来,那么宿主机只需在磁盘上保存一份父镜像,同时内存中也只需加载
一份父镜像就可以为所有容器服务了,并且镜像的每一层都可以被共享。
Docker镜像特点
①Docker镜像只读
②当镜像实例为容器后,只有最外层是可写的。