docker的资源控制
docker的资源控制:对容器使用宿主机的资源(cpu 内存 磁盘IO)进行限制
docker使用linux自带的功能cgroup
control groups 是linux内核系统提供的一种可以限制,记录,隔离进程组所使用的物理资源的机制。
docker借助这个机制,来实现资源的控制
cgroup 本身提供将进程进行分组化管理的功能和接口的基础结构。分配控制的机制来实现资源控制
host:容器和宿主机共用一个网络命名空间
container:容器和容器之间共用一个网络命名空间
1.docker的CPU资源控制
linux通过CFS(Completely Fair Scheduler 完全公平调度器)来调度各个进程对CPU的使用 。CFS的调度100ms,我们也可以自定义容器的调度周期,以及在这个周期时间之内各个容器能够使用cpu的调度时间
--cpu-period 设置容器调度cpu的周期
--cpu-quota 设置在每个周期内,容器可以使用cpu的时间
两者可以配合使用
uCFS周期的有效范围:1ms-1s --cpu-period 1000-1000000
容器使用cpu的配额时间必须 大于1ms --cp-quota的值,必须是>=1000
容器可以使用cpu的时间
docker run -itd --name test2 --cpu-quota 40000 centos:7 /bin/bash
设置容器占用cpu的权重比:需要多个容器才能生效
--cpu-shares 指定容器占用cpu的份额。模式权重1024,设置的值只能是1024的倍数。
--cpu-shares是给每个容器使用cpu设置了相对的权重,权重高的,可以使用cpu的资源更多,但是,如果只有一个容器在运行,即便设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限制。
docker run -itd --name test3 --cpu-shares 512 centos:7 /bin/bash
docker run -itd --name test4 --cpu-shares 1024 centos:7 /bin/bash
docker exec -it test3 bash
yum -y install epel-release
yum -y install stress
stress -c 4
docker top
docker exec -it test4 bash
yum -y install epel-release
yum -y install stress
stress -c 4
docker stats
3.设置容器绑定cou,容器使用指定的cpu内核
docker run -itd --name test5 --cpuset-cpus 1,3 centos:7 /bin/bash
docker exec -it test5 bash
yum -y install epel-release
yum -y install stress
stress -c 4
docker stats
2.内存:限制容器对内存的使用
docker stats
docker run -itd --name test6 --m 512m centos:7 /bin/bash
限制使用swap:想要限制容器swap,必须和限制内部一块使用。
如果限制了内存是512 ,swap是1G,那么容器实际上能够使用的swap空间,1g-512m
如果不设置:-m 512m 但是使用swap的空间是-m 的两倍
如果设置 --memory-swap的值,内存限制一样,容器就不能使用swap空间
-m 512m --memory-swap=-1,内存受限还是512,但是容器使用swap空间不再限制
docker run -itd --name test7 -m 512m --memory-swap=1g centos:7 /bin/bash
3.磁盘IO配额
限制容器在磁盘上的读速度:
docker run -itd --name test8 --device-read-bps /dev/sda:1M centos:7 /bin/bash
写
docker run -itd --name test9 --device-rwrite-bps /dev/sda:1mb centos:7 /bin/bash
限制容器读取的次数
docker run -itd --name test10 --device-read-iops /dev/sda:100 centos:7 /bin/bash
限制读取操作每秒100次
限制容器写入的次数
docker run -itd --name test10 --device-write-iops /dev/sda:50 centos:7 /bin/bash
限制写入的操作,每秒50次
清理docker占用的磁盘空间
docker system prune -a
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!