【Docker】(五)CGroup 资源管控 Day5 防止容器占满服务器内存限制完整实验在Docker中Namespace负责资源隔离让容器互相看不见彼此而CGroup负责资源限制。二者搭配才构成容器两大底层核心技术。如果只有隔离没有限制某个容器疯狂占用CPU、内存会直接把宿主机资源耗尽引发宕机。问答题1、请说明 CGroups 对于容器运行有什么重要作用。资源隔离与限制的核心1、限制组内进程的资源使用量如CPU使用率、内存使用量。防止每个进程或组占用过多资源影响其他进程或系统的稳定性2、为不同组分配不同的资源优先级。为高优先级任务分配更多的CPU时间3、监控和记录组内进程的资源使用情况如CPU时间、内存使用量4、可对组内进程挂起、恢复、终止5、CGroups支持层次化结构可将组嵌套在其他组中形成树形结构2、CGroups 是如何控制容器资源使用的请举例说明。创建控制组、配置资源规则、将进程加入控制组当程序申请的内存超过 100MB 时内核会立刻终止进程不会让它把宿主机内存占满。没有 CGroups容器就做不到真正的资源隔离和限制宿主机上的容器很容易互相干扰甚至拖垮宿主机。一、什么是CGroupCGroup全称Control Groups控制组是Linux内核提供的机制。作用对一组进程做资源配额限制、统计、监控。简单理解Namespace划分“独立房间”CGroup给每个房间安装电表、水表限制最多能用多少资源。二、CGroup五大核心功能资源限制Limit限制进程组最大可占用资源例如最大内存、最大CPU算力。优先级分配Priority分配CPU调度权重重要容器优先使用CPU。资源统计Accounting统计进程消耗CPU、内存、磁盘IO对应docker stats底层数据来源。进程冻结Suspend暂停/恢复一组进程。进程控制Control对组内进程执行信号、销毁等操作。三、常用CGroup子系统Subsystem子系统就是内核中针对某一类资源的管控模块cpu限制CPU时间、调度权重memory限制进程最大内存内存超限触发OOMblkio块设备磁盘IO读写限速pids限制组内最多能创建多少进程防御fork炸弹cpuset绑定进程到指定CPU核心、内存节点多核服务器常用补充容器 Namespace隔离视图 CGroup资源配额 rootfs文件系统四、内存溢出Demo 手动CGroup内存限制实操我们手动创建CGroup限制进程最多使用100M内存运行一段无限申请内存的C语言程序观察内核如何杀掉超限进程。4.1 内存溢出C Demo代码#includestdio.h#includestdlib.h#includestring.hintmain(){while(1){// 每次申请10MB内存char*pmalloc(10*1024*1024);memset(p,1,10*1024*1024);sleep(1);}return0;}编译命令gcc mem_leak.c -o mem_leak4.2 手动创建CGroup限制内存流程挂载cgroup文件系统cgroup v1在memory子系统下新建控制组目录设置最大可用内存memory.limit_in_bytes104857600100MB将程序PID写入tasks文件把进程加入该控制组运行内存溢出程序内存达到阈值后触发OOM Kill进程被系统终止实验现象程序持续占用内存到达100MB上限不再分配新内存内核触发OOM机制杀死进程防止耗尽宿主机内存。五、CGroup v1 与 CGroup v2 简单区分CGroup v1各类资源子系统独立目录cpu、memory分开挂载Docker长期默认使用v1配置简单但是结构零散。CGroup v2统一层级架构所有资源放在同一套目录树内核新版本支持设计更简洁新版容器运行时containerd、crun逐步向v2迁移。六、Docker资源参数底层对应CGroup日常使用docker run资源限制参数底层Docker会自动创建CGroup并写入对应配置无需手动操作文件。- --memory 100m底层写入memory子系统内存上限 - --cpus 0.5限制最多使用0.5颗CPU核心映射cpu子系统配额示例启动命令dockerrun-it--memory100m--cpus0.5nginx当容器内进程持续占用超过设定内存同样会触发OOMCPU占用超过配额会被内核限流无法抢占宿主机全部算力。七、Namespace vs CGroup 核心区别Namespace改变进程“能看到什么资源”实现隔离CGroup限制进程“最多能用多少资源”实现管控。二者互相配合缺一不可。

相关新闻

最新新闻

KMS智能激活工具:3个步骤永久激活Windows与Office的终极指南

KMS智能激活工具:3个步骤永久激活Windows与Office的终极指南

KMS智能激活工具:3个步骤永久激活Windows与Office的终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office突然变成…

2026/8/6 13:54:58
单片机拨动开关检测全解析:从硬件电路到软件消抖的工程实践

单片机拨动开关检测全解析:从硬件电路到软件消抖的工程实践

1. 项目概述:从“开关”到“信号”的桥梁 搞单片机开发,检测一个拨动开关的状态,听起来像是“Hello World”级别的入门操作。但就是这个看似简单的动作,背后却串联起了数字电路基础、单片机IO口特性、硬件抗干扰设计以及软件消抖逻…

2026/8/6 13:54:58
射频集成电路设计:核心模块、挑战与全流程实战解析

射频集成电路设计:核心模块、挑战与全流程实战解析

1. 项目概述:射频集成电路设计是什么? 如果你拆开一部智能手机,或者观察过家里的Wi-Fi路由器,里面那些比指甲盖还小的黑色芯片,就是现代电子设备的“心脏”。在这些芯片中,有一类专门负责处理我们看不见、摸…

2026/8/6 13:54:58
Montserrat字体终极指南:免费开源字体解决方案的5大核心优势

Montserrat字体终极指南:免费开源字体解决方案的5大核心优势

Montserrat字体终极指南:免费开源字体解决方案的5大核心优势 【免费下载链接】Montserrat 项目地址: https://gitcode.com/gh_mirrors/mo/Montserrat 你是否正在寻找一款既美观又完全免费的字体?是否厌倦了商业字体复杂的授权协议和高昂的费用&a…

2026/8/6 13:54:58
Axure RP中文语言包终极指南:3分钟免费实现专业界面汉化

Axure RP中文语言包终极指南:3分钟免费实现专业界面汉化

Axure RP中文语言包终极指南:3分钟免费实现专业界面汉化 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 你是否在使用…

2026/8/6 13:54:58
Axure RP中文汉化终极指南:5分钟实现完美中文界面

Axure RP中文汉化终极指南:5分钟实现完美中文界面

Axure RP中文汉化终极指南:5分钟实现完美中文界面 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axure RP中文语言包…

2026/8/6 13:49:58