Docker的底层技术
Docker使用了一系列的底层技术来充分发挥其技术特色,这些底层技术包括有Namespaces、Control groups、Union file systems和Container format等,其具体含义如下。
1. Namespaces(名称空间)
Docker使用名称空间来为容器提供隔离的工作空间。当一个容器运行时,Docker就会为该容器创建一系列的名称空间,并为名称空间提供一层隔离。每一个容器都运行在相对隔离的环境下,对其他名称空间是相对受限的。
2.Control groups(控制组)
基于Linux系统的Docker引擎也依赖于另一项叫做Control groups(cgroups,控制组)的技术。控制组可以对程序进行资源限定,并允许Docker引擎在容器间进行硬件资源共享以及随时进行限制和约束,例如,开发者可以限制某特定容器的可用内存。
3.Union file systems(联合文件系统)
联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持将文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。不同Docker容器可以共享一些基础的文件系统层,与自己独有的改动层一起使用,可以大大的提高存储效率。Docker目前支持的联合文件系统包括AUFS、btrfs、 vfs 和 DeviceMapper。
4.Container format(容器格式)
Docker引擎将名称空间、控制组和联合文件系统组合成一个叫做容器格式的整体。当前默认的容器格式是libcontainer,未来Docker可能会通过与其他技术(如BSD Jails或者Solaris Zones)的集成使用来开发其他的容器格式。
需要注意的是,本节只是针对这些底层技术进行简要说明,读者只需了解即可。