Docker的系统资源限制及验正
Docker的系统资源限制及验正
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.容器资源限制概述
1>.什么是"Limit a container's resources"
默认情况下,容器没有资源约束,并且可以使用主机内核调度程序所允许的给定资源; Docker提供控制容器可以使用多少内存、CPU或块IO的方法,设置Docker run命令的运行时配置标志; 这些特性中的许多要求内核支持linux功能:要检查支持,可以使用docker info命令
2>.资源限制(Eight-sided containers)

3>.Out Of Memory Exception(简称"OOME")
在linux主机上,如果内核检测到没有足够的内存来执行重要的系统功能,它会抛出oome或内存不足异常,并开始终止进程以释放内存; 一旦发生OOME,任何进程都有可能被杀死,包括docker daemon在内; 为此,Docker特地调整了docker daemon的OOM优先级,以免它被内核"正法",但容器的优先级并未被调整。
4>.限制容器对内存的访问相关参数
博主推荐阅读:https://docs.docker.com/config/containers/resource_constraints/。
二.案例演示
1>.容器内存资源限制验证
[root@node102.yinzhengjie.org.cn ~]# docker run --name stress -it -m 256m lorel/docker-stress-ng:latest stress --vm 2 #启动2个进程对容器进行压测
stress-ng: info: [] defaulting to a second run per stressor
stress-ng: info: [] dispatching hogs: vm
[root@node102.yinzhengjie.org.cn ~]# docker stats #查看容器的状态 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 0.04% .6MiB / 256MiB 73.65% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 0.04% .6MiB / 256MiB 73.65% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 95.88% .91MiB / 256MiB 38.25% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 95.88% .91MiB / 256MiB 38.25% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 96.82% 238MiB / 256MiB 92.98% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
32cc396b4bc1 stress 96.82% 238MiB / 256MiB 92.98% 0B / 0B 0B / 0B
^C
[root@node102.yinzhengjie.org.cn ~]#
[root@node102.yinzhengjie.org.cn ~]# docker stats #查看容器的状态
2>.容器CPU资源限制验证
[root@node102.yinzhengjie.org.cn ~]# docker run --name stress2 -it --cpus --rm lorel/docker-stress-ng:latest stress --cpu 8 #定义核心数为1,因此CPU不会超过100%
stress-ng: info: [] defaulting to a second run per stressor
stress-ng: info: [] dispatching hogs: cpu
[root@node102.yinzhengjie.org.cn ~]# docker stats #查看容器的状态 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 0.00% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 0.00% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.43% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.43% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.31% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.31% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.36% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.36% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.27% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.27% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.23% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.23% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 97.81% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 97.81% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.23% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.23% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.16% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 99.16% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.08% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PID
S7b818dd0554d stress2 98.08% .81MiB / .701GiB 0.42% 0B / 0B 0B / 0B
^C
[root@node102.yinzhengjie.org.cn ~]#
[root@node102.yinzhengjie.org.cn ~]# docker stats #查看容器的状态
Docker的系统资源限制及验正的更多相关文章
- 【程序包管理】篇章2:rpm程序包来源合法和完整性验正
来源合法性验正: 数字签名 私钥签名完整性 哈希 注意: 1.如果是网站下载的程序包的话,没有公钥,就无法进行来源合法性验证,所以最好使用系统自带的rpm程序包或去可靠的网站下载程序包.[如 ...
- 利用内核cgroup机制轻松实现类似docker的系统资源管控
近几年,以docker为代表的容器技术异常火热,它的轻量.高效让人欣喜若狂,它被赋予了改变传统IT运维的使命.相信随着时间推移,以容器云为落地形式的产品将真正实现这一使命. 我们都知道docker能够 ...
- Docker系列09—Docker的系统资源限制及验证
本文收录在容器技术学习系列文章总目录 1.限制容器的资源 默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源.Docker提供了控制容器可以使用多少内存或CPU的方法,设置 ...
- 【05】循序渐进学 docker:系统资源和网络
写在前面的话 在上一篇学习 Dockerfile 的时候其实还有几个相当重要得关键中没有谈到,但没关系,在后面的内容会单独提出来一个一个的学习.这里就先谈谈关于资源的控制个容器的网络~ 资源限制 其实 ...
- Docker 学习10 Docker的系统资源限制及验证
一.资源限制 二.内存限制 1.OOME 每一个进程都会有oom_adj(oom计算分数的权重)值,此值越大,oom_score(oom得分)越高,越容易被干掉,因此非常非常重要的容器化应用,一开始就 ...
- 8.docker的系统资源限制
一. 概述 默认docker容器使用的memory资源和CPU资源是没有限制的,但是我们可以在docker run的时候通过选项去限制,具体参考官方文档. [root@node1 ~]# docker ...
- Docker 学习新手笔记:从入门到放弃
本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢,与此同 ...
- Docker 学习入门
一.Docker 简介 1.什么是 Docker Docker 是使用最广泛的开源容器引擎,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可 ...
- Docker应用场景和局限性
Docker有哪些好的特性?作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势.首先, Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多.其次, Docke ...
随机推荐
- idea的java类图标C不见,取而代之是J标识,且写代码无提示
https://blog.csdn.net/weixin_42800689/article/details/83819676 方法1 此时我们需要关闭节能模式: File–Power Save Mod ...
- siglongjmp和sigsetjmp 用法
1. 引入原因 由于在信号处理期间自动屏蔽了正在被处理的信号,而使用setjmp/longjmp跳出信号处理程序时又不会自动将 信号屏蔽码修改会原来的屏蔽码,从而引起该信号被永久屏蔽. 可以使用sig ...
- golang中defer的正确使用方式(源自深入解析go)
3.4 defer关键字 defer和go一样都是Go语言提供的关键字.defer用于资源的释放,会在函数返回之前进行调用.一般采用如下模式: f,err := os.Open(filename) i ...
- Website Scraping with Python 阅读笔记
第一章 工程涉及的基本工具:requests, beautiful soup, scrapy. 法规与技术约定:read the Terms & Conditions and the Priv ...
- autocomplete undefined一例解决办法
项目中一个页面jqueryui与extjs混用.当使用autocomplete时,会报undefined. 解决办法增加 var jq = jQuery.noConflict(true); 然后使用j ...
- vue 项目不显示样式 排版错乱
vue中的css 样式都在index.html中 看这里是否有导入css
- Word 查找替换高级玩法系列之 -- 通配符大全B篇
未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- Django框架(十三)——Auth模块
Auth模块 一.什么是auth模块 Auth模块是Django自带的用户认证模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册.用户登录.用户认证.注销.修改密码等功能.默认使 ...
- 生意bisynes商业
1.Of, to, pertaining to or utilized for purposes of conducting trade, commerce, governance, advocacy ...