这是本专栏的第二部分:容器篇,共 6 篇,帮助大家由浅入深的认识和掌握容器。前面,我为你介绍了容器生命周期和资源管理相关的内容,让你对容器有了更加灵活的控制。之后从进程的角度带你认识了容器的本质还是一组进程。本篇,我来为介绍容器的核心——cgroups。
什么是 cgroups
先引用一句 Wiki 上对 cgroups 的定义:
cgroups,其名称源自控制组群(control groups)的简写,是 Linux 内核的一个功能,用来限制、控制与分离一个进程组的资源(如 CPU、内存、磁盘输入输出等)。
这句定义虽然比较抽象,但却也道出了 cgroups 的主要功能,限制、控制与分离一个进程组的资源。
这也是我们在上篇中从进程的角度分析容器时,得出容器应该具备的属性:“具备相同特性,也受相同限制的进程组”,它们所受的控制恰好就是由 cgroups 来完成的。
你可能会想知道,cgroups 可以控制哪些资源呢?
- CPU
- 内存
- IO
- 网络
这几类资源是我们平时会比较关注,cgroups 都可以控制,但在本文中,我们重点只看我们之前介绍过的两类:CPU 和内存。
注:一般我们将 cgroups 的技术实现称之为 cgroup,对其整体会统称为 cgroups;为避免术语混用带来的理解成本ÿ