Docker原理第三话--CGroups
来源:互联网 发布:勇士队球员数据 编辑:程序博客网 时间:2024/06/05 06:53
CGroups
上一话我们讲解了Docker使用了Namespace实现隔离性,OK,那么我们想象一下,由于Namespace的存在,黑客不能从A container中越权攻击B container和宿主机host,那么黑客换个思路,在A container中申请大量cpu和memory资源(死循环或fork炸弹等),直接导致资源耗尽,使得B container和host都不能正常服务……这样的话,也达到了攻击的效果。
所以,单有Namespace安全机制还不够,Docker为此加上了CGroups机制……CGroups是Control Groups的缩写,顾名思义就是资源控制机制,此机制实现了对每个容器/进程的资源控制,从而使操作系统可以稳定安全地运行。
本质上来说,cgroups是内核附加在程序上的一系列钩子(hooks),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的……下面我们就来体验一下CGroups吧 ^_^
我们先开启一个终端,查看此bash的pid:
然后再开启一个终端,输入top命令监控每个进程的信息:
现在我们在3104的那个bash中输入以下死循环:
可以看到3104的那个进程CPU使用率立即飙到了97.7%,系统已经变得很卡了,无法正常服务 :-(
接下来我们来使用CGroups…….
cgroups的API以一个伪文件系统的方式实现,即用户可以通过文件操作实现cgroups的组织管理。这些文件在/sys/fs/cgroup下:
在cpu路径下新建一个testcpu文件夹:
惊奇地发现,刚创建完的testcpu目录下会自动生成各种cpu的配置文件,现在我们只需对cpu.cfs_quota_us和tasks进行修改:
我们首先设置了监控的进程pid(3104),然后设置最大的CPU使用率为30%
OK,配置完成,现在再来让那个3104的进程开启死循环:
可以看到,3104的进程最大的CPU使用率已经超不过30%了,CGroups成功对此进程进行了CPU资源控制……
如果想将这些控制策略应用到一个docker容器中,只需在启动容器时添加以下参数就行啦 :-)
- Docker原理第三话--CGroups
- docker -- cgroups资源限制
- docker cgroups 资源限制
- Docker学习(一):linux中的cgroups
- Docker容器资源管理cgroups功能测试
- Docker学习(三)namespace and cgroups
- CGROUPS
- cgroups
- cgroups
- cgroups
- cgroups
- Cgroups
- Docker资源管理探秘:Docker背后的内核Cgroups机制
- Docker资源管理探秘:Docker背后的内核Cgroups机制
- Docker背后的内核知识——cgroups资源限制
- Docker基础: Linux内核之Cgroups(1)
- Docker基础: Linux内核之Cgroups(2)
- Docker背后的内核知识——cgroups资源限制
- 自连接 讲的很简单 通俗易懂
- nginx配置文件关键字整理
- 【书籍】机器学习入门
- maven常见问题问答(含maven属性、变量)
- 虚拟机centos连接网络
- Docker原理第三话--CGroups
- 深度优先搜索的演示学习法——BlackBlank平台应用教学案例
- BZOJ2286:消耗战(虚树,树形dp)
- 快速幂
- Apache Shiro简介
- 迷宫问题
- 使用C#开发数据库应用系统_使用ListView控件展示数据
- 我的秘密武器—Git
- QT5 学习记录 QSerialPort 类实现串口调试工具