ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Docker容器技术原理【第四课】

Docker容器技术原理【第四课】 CGroup1. 作用背景Namespace 只完成资源隔离但不能限制 CPU、内存等物理硬件资源。多个容器同时运行高负载容器会抢占宿主机硬件影响其他业务CGroups 用来解决这个资源争抢问题。2. CGroups 是什么CGroupsControl Groups是 Linux 内核机制对进程做分组管理为分组设置资源限制实现资源的限制、控制、监控是容器核心技术之一。核心功能限制进程资源使用上限CPU、内存防止资源耗尽。设置不同分组的资源优先级。统计监控各组资源使用情况。对进程执行挂起、恢复等操作。支持层级嵌套分组可以树形结构嵌套。3. 子系统 subsystem不同子系统管控不同硬件资源挂载在/sys/fs/cgroupcpu限制 CPU 使用率分配 CPU 时间片memory限制内存、交换分区上限blkio磁盘 IO 读写限制devices管控设备访问权限freezer挂起 / 恢复进程net_cls网络流量标记控制pids限制进程数量4. 内存限制实验要点在/sys/fs/cgroup/memory下创建子目录就生成一个 cgroup 控制组内核自动生成配置文件。修改memory.limit_in_bytes设置内存上限tasks文件写入进程 PID把进程加入该控制组。当进程内存消耗到达阈值内核会终止进程。删除控制组目录即可释放前提 tasks 内没有残留进程。5. 版本发展CGroup v1早期版本各个子系统独立目录。CGroup v2内核 4.5 引入架构重新设计管理更高效。Docker、K8s 大量使用 CGroups 对容器做 CPU、内存、IO 资源管控。简短总结Namespace 负责隔离看得见的资源视图CGroups 负责限制硬件资源用量。CGroups 通过子系统管理各类资源把进程加入控制组实现配额限制是容器必不可少的技术。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进