畅谈Docker底层技术-LXC与Cgroup
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了畅谈Docker底层技术-LXC与Cgroup相关的知识,希望对你有一定的参考价值。
#Docker LXC及Cgroup
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)来提供用户空间的对象,用来保证资源的隔离和对应用系统资源的限制;
Docker容器的文件系统最早是建立在Aufs基础上的,Aufs是一种Union FS,简单来说就是支持将不同的目录挂载到同一个虚拟文件系统之下
并实现一种laver的概念,
由于Aufs未能加入到linux内核中,考虑到兼容性的问题,便加入了Devicemapper的支持,Docker目前默认是建立在Devicemapper基础上,
devicemapper用户控件相关部分主要负责配置具体的策略和控制逻辑,比如逻辑设备和哪些物理设备建立映射,怎么建立这些映射关系等,而具体过滤和重定向IO请求的工作有内核中相关代码完成,因此整个device mapper机制由两部分组成--内核空间的device mapper驱动,用户控件的device mapper库以及它提供的dmsetup工具;
以上是关于畅谈Docker底层技术-LXC与Cgroup的主要内容,如果未能解决你的问题,请参考以下文章