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 ...
随机推荐
- windows zip命令
针对 Windows 用户的提示: win不自带zip,因此 Windows 用户可以从 GnuWin32 项目页面 上下载zip ,并将 C:\Program Files\GnuWin32\bin( ...
- 开源录屏软件Capture推荐
参考链接:有哪些值得推荐的电脑录屏软件与手机录屏软件? - 霸都丶傲天的回答 - 知乎 下载地址(9.0支持中文)
- Kubernetes 原理架构介绍(一)
目录 一.Kubernetes 是什么 二.Kubernetes 设计架构 三.Kubernetes的核心技术概念和API对象 Cluster Master Node Pod Controller D ...
- ubantu系统安装ssh
ssh连接ubantu系统 描述:新安装的ubantu系统,ssh连接发现22端口拒绝,登陆服务器发现没有ssh 1.安装ssh服务 apt-get install openssh-server 报错 ...
- Git 更新
在向远程仓库推送之前,为避免冲突,通常会先从远程仓库更新,再添加文件,再commit到staging area,最近push. 更新使用命令git pull 1 2 3 4 5 6 7 8 9 10 ...
- Java的集合类之 map 接口用法
Map接口不是Collection接口的继承.而是从自己的用于维护键-值关联的接口层次结构入手.按定义,该接口描述了从不重复的键到值的映射. 我们可以把这个接口方法分成三组操作:改变.查询和提供可选视 ...
- C/C++ 每日一题
超长正整数的相加,题目链接:https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId #include<al ...
- linux redis 安装和密码设置
1.下载redis wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar xzvf redis-4.0.8.tar.gz ...
- 通过重新上传修改后的docker镜像来在kubeapps上实现k8s上部署的nginx版本更新,回退等
docker操作:制作自定义镜像 # docker下载官方nginx镜像 docker pull nginx # 基于该镜像运行一个容器 docker run -it -d --name nginx_ ...
- Linux 6 修改ssh默认远程端口号
linux 默认的ssh远程端口是22,有时默认端口会遭到别有用心的人们扫描或攻击,为了时我们的系统更加安全那就需要修改远程端口号 操作步骤:1.修改ssh_config配置文件 vim /etc/s ...