docker的资源控制:
对容器的使用宿主机的资源进行限制
cpu 内存 磁盘i/0
docker使用linux自带的功能cgroup
control grouos是linux内核系统提供的一种可以限制,记录,隔离进程所使用的物理资源
control grouos是linux内核系统提供的一种可以限制,记录,隔离进程组所使用的物流资源的机制
docker借助这个机制,来实现资源的控制、
cgroup 本身是提供讲进程分组化管理和接口的基础结果,分配控制的机制来实现资源控制
host:容器和宿主机公用一个网络命名空间
container容器和容器之间公用一个网络命令空间
其他的资源依然是隔离的、
1、cpu资源控制
Linux通过CFS(Completely Fair Scheduler 完全公平调度器),来调度各个进程对cpu的使用
CFS的调度100ms
我们也可以自定义容器的调度周期,已经在这个周期时间之内各个容器能够使用cpu的调度时间
--cpu-period 设置容器调度cpu的调度时间
--cpu-quota 设置在每个周期内,容器可以使用cpu的时间
可以配用使用
CFS周期的有效范围:1ms-1s --cpu-period 1000-1000000
容器使用cpu的配额时间必须,大于1ms, --cpu-quota的值,必须是>=1000
docker run -itd --name test1 centos:7 /bin/bash
cd /sys/fs/cgroup
cat cpu.cfs_quota_us
-1
如果配置是-1,那么容器在使用宿主机cpu的的时间不做任何限制
CFS调度的周期长度,微妙,在每个周期内,容器可以使用指定比例的cpu时间,默认情况都是100毫秒
CFS调度器;100毫秒就是定义了一个周期,在周期内,调度任务(容器)的基本时间单位
也就是100毫秒一次调度器请求cpu资源,然后把内核cpu资源给容器
cpu.cfs_quota_us :调度请求之后,根据配额,内核跟配给容器使用的cpu时间
vim cpu.sh
docker stats test1/if 可以容器的运行占用宿主机
docker ps -a
cd /sys/fs/cgroup/cpu
cd docker
cd id