小知识:如何使用docker对容器资源进行限制

问题窥探

在服务器当中,假设iis服务部署多个站点,那么只要其中一个站点出问题,假设是cpu100%,或者是内存爆满,那么这台服务器上的其他站点都会跟着挂掉。同样在使用容器时,单台主机上可能会跑几十个容器,容器虽然都相互隔离,但是用的却是与宿主机相同的内核,CPU、内存、磁盘等硬件资源。如果不对容器资源进行限制,容器之间就会相互影响。

解决办法

Docker提供了限制内存,CPU或磁盘IO的方法, 可以对容器所占用的硬件资源大小以及多少进行限制,我们在使用docker create创建一个容器或者docker run运行一个容器的时候就可以来对此容器的硬件资源做限制。

内存限制

Docker 提供的内存限制功能有以下几点:

1、容器能使用的内存和交换分区大小。

2、容器的核心内存大小。

3、容器虚拟内存的交换行为。

4、容器内存的软性限制。

5、是否杀死占用过多内存的容器。

6、容器被杀死的优先级

?
1
2
3
4
5
6
7
-m,–memory   内存限制,格式是数字加单位,单位可以为 b,k,m,g。最小为 4M
–memory-swap  内存+交换分区大小总限制。格式同上。必须必-m设置的大
–memory-reservation  内存的软性限制。格式同上
–oom-kill-disable   是否阻止 OOM killer 杀死容器,默认没设置
–oom-score-adj     容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0
–memory-swappiness   用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数
–kernel-memory     核心内存限制。格式同上,最小为 4M

用户内存限制就是对容器能使用的内存和交换分区的大小作出限制。

使用时要遵循两条直观的规则:
?
1
2
-m,–memory选项的参数最小为 4M。
–memory-swap不是交换分区,而是内存加交换分区的总大小,所以–memory-swap必须比-m,–memory大。
cpu限制

docker run命令和 CPU 限制相关的所有选项如下:

?
1
2
3
4
5
–cpuset-cpus=””     允许使用的 CPU 集,值可以为 0-3,0,1
-c,–cpu-shares=0  CPU   共享权值(相对权重)
cpu-period=0       限制 CPU CFS 的周期,范围从 100ms~1s,即[1000, 1000000]
–cpu-quota=0       限制 CPU CFS 配额,必须不小于1ms,即 >= 1000
–cpuset-mems=””     允许在上执行的内存节点(MEMs),只对 NUMA 系统有效

其中–cpuset-cpus用于设置容器可以使用的 vCPU 核。-c,–cpu-shares用于设置多个容器竞争 CPU 时,各个容器相对能分配到的 CPU 时间比例。–cpu-period和–cpu-quata用于绝对设置容器能使用 CPU 时间。

到此这篇关于如何使用docker对容器资源进行限制的文章就介绍到这了,更多相关docker容器资源限制内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/lyl6796910/archive/2021/03/05/14484282.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker-compose基于MySQL8部署项目的实现

2023-3-24 11:39:38

建站知识

小知识:详解Shell脚本控制docker容器启动顺序

2023-3-24 11:54:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索