理解docker [一] - control group

本文详细介绍了Docker中的控制组(cgroup)技术,它是容器资源限制的关键。cgroup允许对进程集合进行资源限制和统计,提供了一个灵活的系统来管理容器的资源使用。文章讨论了cgroup的子系统,如cpu、cpuacct和cpuset,并对比了cgroup v1和v2的设计差异。cgroup v2简化了层级结构,但移除了某些v1特性,如进程的跨group分布。
摘要由CSDN通过智能技术生成

另一种虚拟化

 

docker作为一种将应用及其依赖进行package后发布的容器,就像可以被货轮承载和迁移的集装箱一样。现在的港口的设备当然是很强力了,不过在以前,货物达到码头后,还是需要码头工人来搬运,这似乎就是"docker"一词的原意。

作为一种基于OS的虚拟化技术,和传统的基于hypervisor的虚拟机技术一样,都是需要共享物理主机上的资源。但相比hypervisor中的Virtual Machine(以下简称VM)而言,docker的隔离度更弱,但同时资源消耗更小,相同平台可运行的container数目也更多。

而且,由于docker中的container是共享底层OS的,因此启动非常迅速。而像KVM这样的hypervisor在启动一个VM的时候,需要解压和引导VM所使用的内核,因而耗时更长。

三大支撑技术

docker最初是基于Linux设计的容器技术(现在也可以通过docker toolbox在Windows上做一个模拟层来移植到Windows上),它的实现依赖于Linux中众多的基础机制,包括用于资源限制的cgroup,用于隔离的Namespace,以及用于实现docker文件系统的Union FS等。

 

画土分疆 - Control Group

为什么要有group

"cgroup"代表的是"control group",这里"group"是进程的集合。“进程的集合”似乎不是一个新鲜的概念,「进程组」不就是吗?对,但「进程组」的这个集合包括的是协同工作的一组进程(比如作为整体去接收信号),而cgroup这个集合的主要目的在于控制资源的使用:多个进程作为一个整体享有资源的配额(quota),同时接受资源的限制。

在cgroup出现之前,只能对一个进程做一些资源控制,例如通过"nice"值限定对CPU的使用,或者用ulimit限制一个进程的打开文件上限、栈大小等。而cgroup可以对进程进行任意的分组,如何分组是用户自定义的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值