Docker基础技术:Linux CGroup
这篇讲的是Docker背后的核心资源隔离技术——Linux CGroup。作者从Namespace只解决“环境隔离”但无法限制“资源使用”这一痛点切入,引出了CGroup的必要性。 CGroup(控制组)是Linux内核的功能,最初由Google工程师在2006年发起,旨在为进程组分配和隔离CPU、内存、磁盘I/O等计算资源。文章清晰地归纳了它的四大核心能力:资源限制、优先级控制、审计统计以及进程挂起/恢复。这些能力让系统管理员能像为虚拟机分配资源一样,精细地管控容器或一组进程。 文中通过一个生动的实例展示了CGroup的威力:一个耗尽CPU的“死循环”程序,在被加入一个CPU份额设为20%的CGroup后,其CPU占用立刻降至约20%。这种通过操作 `/sys/fs/cgroup` 下的文件(如 `cpu.cfs_quota_us` 和 `tasks`)来即时调控资源的方式,直观地体现了CGroup作为一种基于文件系统的接口的设计思路。对于想理解Docker如何实现资源限制的读者,这篇文章提供了扎实的原理和可动手实践的细节。