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的系统资源限制及验正的更多相关文章

  1. 【程序包管理】篇章2:rpm程序包来源合法和完整性验正

    来源合法性验正: 数字签名   私钥签名完整性    哈希 注意: 1.如果是网站下载的程序包的话,没有公钥,就无法进行来源合法性验证,所以最好使用系统自带的rpm程序包或去可靠的网站下载程序包.[如 ...

  2. 利用内核cgroup机制轻松实现类似docker的系统资源管控

    近几年,以docker为代表的容器技术异常火热,它的轻量.高效让人欣喜若狂,它被赋予了改变传统IT运维的使命.相信随着时间推移,以容器云为落地形式的产品将真正实现这一使命. 我们都知道docker能够 ...

  3. Docker系列09—Docker的系统资源限制及验证

    本文收录在容器技术学习系列文章总目录 1.限制容器的资源 默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源.Docker提供了控制容器可以使用多少内存或CPU的方法,设置 ...

  4. 【05】循序渐进学 docker:系统资源和网络

    写在前面的话 在上一篇学习 Dockerfile 的时候其实还有几个相当重要得关键中没有谈到,但没关系,在后面的内容会单独提出来一个一个的学习.这里就先谈谈关于资源的控制个容器的网络~ 资源限制 其实 ...

  5. Docker 学习10 Docker的系统资源限制及验证

    一.资源限制 二.内存限制 1.OOME 每一个进程都会有oom_adj(oom计算分数的权重)值,此值越大,oom_score(oom得分)越高,越容易被干掉,因此非常非常重要的容器化应用,一开始就 ...

  6. 8.docker的系统资源限制

    一. 概述 默认docker容器使用的memory资源和CPU资源是没有限制的,但是我们可以在docker run的时候通过选项去限制,具体参考官方文档. [root@node1 ~]# docker ...

  7. Docker 学习新手笔记:从入门到放弃

    本文记录的是作为一个新手,从了解 Docker 是什么.Docker 技术包含哪些概念到上手使用.安装以及发布 Docker 镜像的整个过程.作者在学习过程中参阅了诸多文档和教程,在此一并感谢,与此同 ...

  8. Docker 学习入门

    一.Docker 简介 1.什么是 Docker Docker 是使用最广泛的开源容器引擎,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可 ...

  9. Docker应用场景和局限性

    Docker有哪些好的特性?作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势.首先, Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多.其次, Docke ...

随机推荐

  1. idea的java类图标C不见,取而代之是J标识,且写代码无提示

    https://blog.csdn.net/weixin_42800689/article/details/83819676 方法1 此时我们需要关闭节能模式: File–Power Save Mod ...

  2. siglongjmp和sigsetjmp 用法

    1. 引入原因 由于在信号处理期间自动屏蔽了正在被处理的信号,而使用setjmp/longjmp跳出信号处理程序时又不会自动将 信号屏蔽码修改会原来的屏蔽码,从而引起该信号被永久屏蔽. 可以使用sig ...

  3. golang中defer的正确使用方式(源自深入解析go)

    3.4 defer关键字 defer和go一样都是Go语言提供的关键字.defer用于资源的释放,会在函数返回之前进行调用.一般采用如下模式: f,err := os.Open(filename) i ...

  4. Website Scraping with Python 阅读笔记

    第一章 工程涉及的基本工具:requests, beautiful soup, scrapy. 法规与技术约定:read the Terms & Conditions and the Priv ...

  5. autocomplete undefined一例解决办法

    项目中一个页面jqueryui与extjs混用.当使用autocomplete时,会报undefined. 解决办法增加 var jq = jQuery.noConflict(true); 然后使用j ...

  6. vue 项目不显示样式 排版错乱

    vue中的css 样式都在index.html中 看这里是否有导入css

  7. Word 查找替换高级玩法系列之 -- 通配符大全B篇

    未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)

  8. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  9. Django框架(十三)——Auth模块

    Auth模块 一.什么是auth模块 Auth模块是Django自带的用户认证模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册.用户登录.用户认证.注销.修改密码等功能.默认使 ...

  10. 生意bisynes商业

    1.Of, to, pertaining to or utilized for purposes of conducting trade, commerce, governance, advocacy ...