docker内存及cpu限制(不断总结中)

在一台物理机上启动了多个docker容器时,就需要对内存及cpu做出相关的限制,以达到容器互不影响的目的

限制内存:-m选项

注:限制内存后进入容器中(free -m)查看内存,显示的内存为物理机的内存

1
2
3
4
5
[root@localhost ~] # docker run -d -p 80 -m 200m --name nginx nginx
b1086dbc4e4a4230c6289d99230c8a6a37e9e28e993678303cb97acd7faa6a09
[root@localhost ~] # docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
b1086dbc4e4a        nginx                "nginx -g 'daemon off"    3 seconds ago       Up 3 seconds        443 /tcp , 0.0.0.0:32768->80 /tcp    nginx

查看限制结果:docker stats命令

可以看到此容器的内存使用量以及最大可以内存

1
2
3
4
[root@localhost ~] # docker stats nginx
 
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I /O              BLOCK I /O            PIDS
nginx               0.00%               8.586 MiB / 200 MiB   4.29%               648 B / 648 B       6.926 MB / 0 B      0

wKioL1ibCSPR0EdzAAAqv7r1yPU743.png


限制cpu的使用个数:--cpuset-cpus

--cpuset-cpus使用方法:

    0,1,3,5:指定使用0,1,3,5的cpu

    0-3:使用0,1,2,3的cpu

1
[root@localhost ~] # docker run -d -p 80 --name nginx-test --cpuset-cpus=0 nginx

测试限制cpu是否成功:

注:限制cpu后进入容器中通过top查看的还是物理机的cpu

测试方法:agileek/cpuset-test

下载CPU测试image;agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满

1
2
3
4
5
6
[root@localhost ~] # docker pull agileek/cpuset-test
Using default tag: latest
latest: Pulling from agileek /cpuset-test
ff9ec0a03b10: Pull complete 
Digest: sha256:ba93b1446b8a2e70850001ebc1679d5be41fc5700133eebc116db70c213835bd
Status: Downloaded newer image  for  agileek /cpuset-test :latest

测试--cpuset-cpus=0

1
[root@localhost ~] # docker run -it --rm --cpuset-cpus=0 agileek/cpuset-test

另开一窗口观察cpu的压力情况:mpstat -P ALL 3(mpstat安装包为sysstat)

可以看到cpu0的在完全占用的情况,其余的cpu并没有受到影响

由此判定--cpuset-cpus的高定生效了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~] # mpstat -P ALL 3
Linux 3.10.0-229.el7.x86_64 (localhost.localdomain)  02 /08/2017      _x86_64_    (4 CPU)
 
03:16:38 PM  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:16:41 PM  all   24.94    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   74.98
03:16:41 PM    0   99.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00
03:16:41 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:41 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:41 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
03:16:41 PM  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:16:44 PM  all   24.96    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   74.96
03:16:44 PM    0   99.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00
03:16:44 PM    1    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.67
03:16:44 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:44 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

wKiom1ibDdmyZHXqAABeSP7G__c307.png 

也可以进入容器中写一个死循环,查看cpu利用情况:

1
2
3
4
5
6
[root@cff6c983451e tmp] # cat test.sh 
#!/bin/bash
i=0
while  true ; do
let  i++
done

本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1896177如需转载请自行联系原作者

weilovepan520
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/543024

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。