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 ...
随机推荐
- Python的log
关键代码 调用方: from Logger import MyLogger import logging import sys, os def getLogger(): # get the file ...
- OpenStack(三)——allinone云平台的使用方法
接着OpenStack(二)——使用Kolla部署OpenStack-allinone云平台继续操作. 特别感谢https://www.cnblogs.com/openstackteam/p/5519 ...
- linux默认的2.7升级到3.7版本
CentOS7中自带的python版本是python-2.7.5,由于新开的虚拟机需要使用python3,于是便升级一下版本. 安装Python3.7.3 官网下载地址:https://www.pyt ...
- java Random 随机密码
/** * Created by xc on 2019/11/23 * 生成随机密码:6位数字 */public class Test7_4 { public static void main(Str ...
- PHP匹配中文,匹配车牌号
/** * 车牌号 * 字母全部大写 * @param $str * @return string */ public static function checkCar($str) { $patter ...
- Java生成二进制文件与Postman以二进制流的形式发送请求
业务描述: 模拟终端(智能家居)发送HTTP POST请求,请求参数为二进制流:而且,二进制流是加密后的数据,因此调试分两步: 1.Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是 ...
- LeetCode 1089. 复写零(Duplicate Zeros) 72
1089. 复写零 1089. Duplicate Zeros 题目描述 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移. 注意:请不要在超过该数组长 ...
- Centos 7搭建Gitlab服务器超详细
一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问. 1.安装ss ...
- svn-疑难解决
Linux下搭建SVN服务器 https://blog.51cto.com/19940919/2095011 [SVN]出现SVN--Authorization failed错误原因 https:// ...
- ChineseNumber 转换
中文数字转换 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * &l ...