参考原文:https://blog.csdn.net/crazymakercircle/article/details/120747767
docker的本质,是在linux上运行另一套隔离的程序,其实现的原理是基于linux提供的各种资源管理和资源隔离的基础上实现的。
dockers=LXC+AUFS
docker为LXC+AUFS组合:
- LXC负责资源管理
- AUFS负责镜像管理;
而LXC包括cgroup,namespace,chroot等组件,并通过cgroup资源管理
那么,从资源管理的角度来看,Docker,Lxc,Cgroup三者的关系是怎样的呢?
cgroup是在底层落实资源管理,LXC在cgroup上面封装了一层,随后,docker有在LXC封装了一层;
Cgroup其实就是linux提供的一种限制,记录,隔离进程组所使用的物理资源管理机制;也就是说,Cgroup是LXC为实现虚拟化所使用资源管理手段,我们可以这样说,底层没有cgroup支持,也就没有lxc,更别说docker的存在了,这是我们需要掌握和理解的,三者之间的关系概念
我们在把重心转移到LXC这个相当于中间件上,上述我们提到LXC是建立在cgroup基础上的,我们可以粗略的认为LXC=Cgroup+namespace+Chroot+veth+用户控制脚本;LXC利用内核的新特性(cgroup)来提供用户空间的对象,用来保证资源的隔离和对应用系统资源的限制;
