设为首页 收藏本站
查看: 1073|回复: 0

[经验分享] Docker(三)资源控制

[复制链接]

尚未签到

发表于 2019-2-21 08:37:33 | 显示全部楼层 |阅读模式
Docker资源控制
  Cgroup是Control group的简写,是Linux内核提供的一种限制所使用物理资源的机制,这些资源主要包括CPU、内存、blkio。下面就这三个方面说一下Docker是如何使用Cgroup机制进行管理

1:限制CPU使用速率
  在Docker中可以通过 --cpu-quota选项来限制CPU使用速率,CPU的百分比是以1000为单位

查看CPU使用率
[root@xyue apache] docker stats
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
315af9149b30        0.00%               7.406MiB / 992.7MiB   0.75%               912B / 0B           11.3MB / 0B         82
70d968aa6ef5        0.00%               5.484MiB / 992.7MiB   0.55%               3.71kB / 2.34kB     4.85MB / 0B         8
#比如:
[root@xyue apache] docker run -d --cpu-quota 10000 httpd
6883bf68559ba5101b04084cca7a00674a3c69d520d5524cc37d810926906001  //CPU的使用率限定为20%
#修改配置文件对Cgroup对CPU限制配置文件在,/sys/fs/cgroup/cpu/docker容器编号/cpu.cgs_quota_us的值来实现
[root@xyue ~]# cd /sys/fs/cgroup/cpu/docker/70d968aa6ef5b132393f310e25d3f55c4a0f8f4b5a821d3c1e72431917906156
[root@xyue 70d968aa6ef5b132393f310e25d3f55c4a0f8f4b5a821d3c1e72431917906156]# ls
cpu.cfs_quota_us
#导入配置文件后立即生效
[root@xyue 70d968aa6ef5b132393f310e25d3f55c4a0f8f4b5a821d3c1e72431917906156]# cat cpu.cfs_quota_us
-1
[root@xyue 70d968aa6ef5b132393f310e25d3f55c4a0f8f4b5a821d3c1e72431917906156]# echo 10000 > cpu.cfs_quota_us
[root@xyue 70d968aa6ef5b132393f310e25d3f55c4a0f8f4b5a821d3c1e72431917906156]# cat cpu.cfs_quota_us
10000
多任务按比例分享CPU
  当有多个容器任务运行时,很难计算CPU使用率。为了使容器合理使用CPU资源,可以通过--cpu-share选项设置CPU按比例共享CPU资源,这种方式实现CPU使用率的动态调整

[root@xyue ~]# docker run -d --cpu-shares 1024 httpd
b1840fdb38d963511f779a3931d75d77747c5c18b97cd52eb8bd325529111146
[root@xyue ~]# docker run -d --cpu-shares 2048  httpd:centos
18fe91d01d360940c6c3ca8610c7dd546f439ccf5cc0821e6863b183ff41732c
[root@xyue ~] docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                       PORTS               NAMES
18fe91d01d36        httpd:centos        "/run.sh"            6 seconds ago       Up 5 seconds                 80/tcp              romantic_hodgkin
b1840fdb38d9        httpd               "httpd-foreground"   57 seconds ago      Up 56 seconds                80/tcp              youthful_bartik
限制CPU内核使用
  在Docker中可以直接使用--cpuset-cpus选项来世某个程序独享CPU内核以便提高处理速度,对应的Cgroup配置文件为/sys/fs/cgroup/cpuset/docker容器编号cpuset.cpus。选项后面直接跟参数0,1,2...表示第一个内核,第二个内核,第三个内核
  如果服务器有16个核心,那么CPU编号为0~15,是容器绑定1~4个内核使用

docker run -d --cpuset-cpus 0,1,2,3 容器名
对内存使用限制
  在Docker中可以通过docker run -m 命令来限制内存使用量相应Cgroup配置文件为/sys/fs/cgroup/memory.limit_in_bytes。但需要注意:一旦容器Cgroup使用超过内存限制的容量,Linux内核将会尝试收回这些内存,如果人就无法控制内存使用限制范围之内,进程就会被杀死
  例如:限制容器内存为512M

docker run -m 512m 512
对blkio的限制
  如果在一台服务器上进行容器的混合部署,那么会出现有几个程序写入磁盘数据的情况,可以通过--device-write-iops选项来限制写入iops,相应还有--device-read-bps选项可以限制读取iops。但是这种方法只能针对blkio限制的设备,而不是分区。相应Cgroup写配置文件/sys/fs/cgroup/blkio/docker/容器ID/blkio.write_iops_device
  例如限制容器的/dev/sda1的写入iops为1MB

docker run --device-write-bps /dev/sda1:1mb 容器名



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675110-1-1.html 上篇帖子: Docker(二)容器操作容器 下篇帖子: 开发测试环境通过gitlab+jenkins+docker 实现一命令部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表