1.4.3 联合文件系统

联合文件系统(Union File Systems,UnionFS)是为Linux、FreeBSD和NetBSD操作系统设计的,它是将其他文件系统合并到一个联合挂载点的一种文件系统。作为轻量级的高性能分层文件系统,它支持提交文件系统中的变更信息,每提交一次就产生一层,并且层层叠加;同时可以将不同目录挂载到同一个虚拟文件系统下,应用程序看到的是挂载的最终结果。

作为Docker重要的底层技术,联合文件系统通过创建层来操作,非常轻巧和快速。Docker引擎可以使用联合文件系统的多种变体,包括AUFS、OverlayFS、Btrfs、BFS和DeviceMapper等。

联合文件系统是实现Docker镜像的技术基础。Docker镜像可以通过分层进行继承。例如,用户基于基础镜像(作为用来生成其他镜像的基础,往往没有父镜像)来制作各种不同的应用程序镜像。这些镜像共享同一个基础镜像层,提高了存储效率。此外,当用户改变了一个Docker镜像(比如升级程序到新的版本),则会创建一个新的层。因此,用户不用替换整个原镜像或者重新建立,只需要添加新的层即可。用户分发镜像的时候,也只需要分发被改动的新增层内容(增量部分)。这使Docker的镜像管理变得轻便快捷。