docker 资源限制之 cgroup
1. Liunx cgroup
使用 namespace 隔离运行环境,使得进程像在独立环境中运行一样。然而,仅有隔离环境还不够,还得限制被 namespace 隔离的资源。否则,namespace 将不限制的访问系统资源。并且,当系统资源耗尽时内核会触发 OOM 杀死不想关的进程。
Liunx 提供 cgroup 对资源进行管理,它可以限制被 namespace 隔离的资源,同时可以对资源设置权重,计算使用量,控制进程/线程启停等。
(详细信息可查看 man cgroup 和 这里 )
2. docker cgroup
在 docker 的 cgroup 实现中,docker daemon 会在每个子系统的控制组目录下创建名为 docker 的控制组。然后,在控制组下为每个容器创建以容器 ID 为名的容器控制组。 以限制容器的 CPU 为例创建容器:
root@chunqiu:/# docker run -d --cpu-shares 30 --cpu-quota 25000 --cpu-period 1000 --name chunqiu sleep infinity
25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00
root@chunqiu:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
25dbad77c117 5bafba9edb0b "sleep infinity" 4 seconds ago Up 2 seconds chunqiu
查看容器控制组:
root@chunqiu:/sys/fs/cgroup/cpu/docker# ls
25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00 cpuacct.stat cpu.cfs_period_us cpu.stat
cgroup.clone_children cpuacct.usage cpu.cfs_quota_us notify_on_release
cgroup.procs cpuacct.usage_percpu cpu.shares tasks
root@chunqiu:/sys/fs/cgroup/cpu/docker# cd 25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00/
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# ls
cgroup.clone_children cpuacct.stat cpuacct.usage_percpu cpu.cfs_quota_us cpu.stat tasks
cgroup.procs cpuacct.usage cpu.cfs_period_us cpu.shares notify_on_release
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# cat tasks
15331
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# cat cpu.cfs_quota_us
25000
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# cat cpu.shares
30
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# cat cpu.cfs_period_us
1000
可以看到,容器的资源(进程 15331)写入到 cgroup 控制组中,实现了对容器访问系统资源的限制。
进入容器,开启另一个进程,查看该进程是否加入到容器控制组:
/* 进入容器开启一个 bash 进程 */
root@chunqiu:/sys/fs/cgroup/cpu/docker# docker exec -it chunqiu /bin/bash
bash-5.0$
查看容器控制组:
root@chunqiu:/sys/fs/cgroup/cpu/docker/25dbad77c117efc91b03fd76162ffbab01d2c2ada42ac3d25baa00c97a693e00# cat tasks
15331
15890
root@chunqiu:/# ps -ef | grep 15313 | grep -v grep
root 15313 817 0 07:52 ? 00:00:00 containerd-shim /var/run/docker/runtime-runc
9999 15331 15313 0 07:52 ? 00:00:00 /usr/bin/sleep infinity
9999 15890 15313 0 08:15 pts/0 00:00:00 /bin/bash
容器中加入了新进程 15890,它是容器中的 bash 进程,cgroup 对容器控制组的 sleep 和 bash 进程进行了限制。
docker 资源限制之 cgroup的更多相关文章
- Docker资源限制实现——cgroup
摘要 随着Docker技术被越来越多的个人.企业所接受,其用途也越来越广泛.Docker资源管理包含对CPU.内存.IO等资源的限制,但大部分Docker使用者在使用资源管理接口时往往还比较模糊. 本 ...
- Docker资源限制与Cgroups
一.Linux control groups 简介 Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 ...
- Docker资源网站收藏
Docker资源 Docker官方英文资源: docker官网:http://www.docker.com Docker windows入门:https://docs.docker.com/windo ...
- 你可能不知道的Docker资源限制
What is 资源限制? 默认情况下,容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源.Docker提供了一种控制分配多少量的内存.CPU或阻塞I/O给一个容器的方式,即通过在dock ...
- Docker 资源 | 官方文件
Docker资源 Docker官方英文资源: docker官网:http://www.docker.com Docker windows入门:https://docs.docker.com/windo ...
- Docker 资源汇总
Docker 资源汇总 Docker官方英文资源 Docker官网:http://www.docker.com Docker Windows 入门:https://docs.docker.com/do ...
- docker资源隔离实现方式
默认情况下,一个容器没有资源限制,几乎可以使用宿主主机的所有资源.docker提供了控制内存.cpu.block io.但是实际上主要是namespace和cgroup控制资源的隔离. Docker的 ...
- 如何快速清理 docker 资源
如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用.本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无 ...
- Docker资源限制
我们在容器中运行docker镜像的时候,可以指定一些设置容器cpu和内存的相关参数来进行限制,这样子尽量把容器资源做的相对稳定一些.这些参数是在docker run/create命令使用,比如: -- ...
- docker 资源限制
docker run 时使用-m指定可以使用的内存大小, 记录在cgroup配置文件中 cat /sys/fs/cgroup/memory/memory.limit_in_bytes jvm内存会超过 ...
随机推荐
- Educational Codeforces Round 26 Problem C
C. Two Seals time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 从零玩转Nginx
01[熟悉]实际开发中的问题? 现在我们一个项目跑在一个tomcat里面 当一个tomcat无法支持高的并发量时.可以使用多个tomcat 那么这多个tomcat如何云分配请求 |-nginx 02[ ...
- 痞子衡嵌入式:Farewell, 我的写博故事2023
-- 题图:苏州虎丘塔 2023 年的最后一天,照旧写个年终总结.昨晚和同门师兄弟一起吃饭,有个师弟告诉痞子衡,微博上一个拥有 22.3W 粉丝的嵌入式同行今年 4 月发过一个吐槽微博,说恩智浦 MC ...
- Ubuntu安装Maridb 10.5版本
以20.04版本为例 Ubutun20.04自带源默认安装的mariadb版本为10.3不符合安装zabbix6.0的要求 打开MariaDB的官方网站:https://mariadb.org/mar ...
- MySQL运维实战(1.1)安装部署:使用RPM进行安装部署
作者:俊达 我们在生产环境部署mysql时,一般很少使用RedHat Package Manager(RedHat软件包管理工具).用rpm或或者其他包管理器安装mysql有其好处,例如安装简单,并且 ...
- 终于肝完了!全网最全、最详细、最全面的 Hadoop大数据学习教程( 2023最新版 )
大家好,我是民工哥! 前面给大家介绍了:关系型数据库 MySQL . NoSQL 数据库 Redis . MongoDB .搜索引擎 ElasticSearch 等知识体系学习的文章. 在当今这样的就 ...
- 带你用VUE实现上传图片效果
摘要:在逛b站时看到一个上传图片的效果,想着可以自己也做一个,因为原作者是用原生js写的,那我不如就用vue写好了,当然,是一个很小的东西,在HTML文件直接引用vue就好了,详细步骤如下~ 本文分享 ...
- DarkMode(5):深色模式不同实现方案切换
sass自定义函数转 sass预处理 在<DarkMode(2):深色模式解决方案--css颜色变量实现Dark Mode>与<DarkMode(3):深色模式解决方案--颜色反转与 ...
- 电商流量分析怎么做?试试这款数据工具 DataLeap!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作为成熟的电商模式,货架场景可以让商家以更低的门槛入驻,让消费者完成更高销量的购买和复购. 在这一场景下,运营人员 ...
- 火山引擎数智平台 VeDI 帮助智能投影仪更懂用户需求
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当露营成为年轻人的一种全新生活方式后,连带着户外野营帐篷.可折叠桌椅.卡式炉.多人趣味桌游等露营周边市场都迎来新一 ...