参考原文: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封装了一层;
image.png
Cgroup其实就是linux提供的一种限制,记录,隔离进程组所使用的物理资源管理机制;也就是说,Cgroup是LXC为实现虚拟化所使用资源管理手段,我们可以这样说,底层没有cgroup支持,也就没有lxc,更别说docker的存在了,这是我们需要掌握和理解的,三者之间的关系概念

我们在把重心转移到LXC这个相当于中间件上,上述我们提到LXC是建立在cgroup基础上的,我们可以粗略的认为LXC=Cgroup+namespace+Chroot+veth+用户控制脚本LXC利用内核的新特性(cgroup)来提供用户空间的对象,用来保证资源的隔离和对应用系统资源的限制;