Docker 算不上什么新技术,基于LXC使用AUFS,而这些技术已经存在很长时间并被广泛应用。
总之:LXC 和 AUFS 技术是Docker 的基石。
LXC又名Linux container。
Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。
Linux Container是一种虚拟化的解决方案,这种是内核级的虚拟化。(主流的解决方案Xen ,KVM, LXC)
Sourceforge上有LXC这个开源项目。LXC项目本身只是一个为用户提供一个用户空间的工具集,用来使用和管理LXC容器。LXC真正的实现则是靠Linux内核的相关特性,LXC项目只是对此做了整合。基于容器的虚拟化技术起源于所谓的资源容器和安全容器。
LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
AUFS
aufs的全称是advanced multi-layered unification filesystem,主要功能是把多个文件夹的内容合并到一起,提供一个统一的视图,主要用于各个Linux发行版的livecd中,以及docker里面用来组织image。
据说由于aufs代码的可维护性不好(代码可读性和注释不太好),所以一直没有被合并到Linux内核的主线中去,不过有些发行版的kernel里面维护的有该文件系统,比如在ubuntu 16.04的内核代码中,就有该文件系统。
参选:http://coolshell.cn/articles/17061.html