Docker的资源控制

Docker使用Linux自带的功能cgroup

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

Cat cpu.cfs_quots_us

-1

如果配置是1,那么容器在使用宿主机cpu的时间不做任何限制。

Cat cpu.cfs_period_us

100000

CFS调度周期的长度,微妙,在每个周期内,容器可以使用指定比例的cpu时间,默认情况都是100毫秒

CFS调度器,100毫秒就是定义了一个周期,在这个周期内,调度任务(容器)的基本时间单位。

   100毫秒一次调度容器请求cpu的资源。然后内核吧cpu资源分配给容器。

Cpu.cfs_quota_us:调度器请求后,根据配额,内核分配给容器使用cpu的使用时间。

Docker stats test1/id 可以

设置容器占用CPU的权重比:需要多个容器 才能生效。

--cpu-shares 指定容器占用CPU的份额。模式权重1024 设置的值只能是1024的倍数。

--cpu-shares是给每个容器使用CPU设置了相对的权重,权重高的,可以使用CPU的资源更多,但是,如果只有一个容器在运行,即便设置了权重,但是没有其他更高的权重的容器来占用资源,权重低的容器依然不受限制。

设置容器绑定CPU容器只能使用指定的CPU核数

Docker的资源控制_第1张图片

容器占用CPU的时间

容器占用CPU的权重比(多个容器时,才有效)

容器占用CPU的内核数,绑定指定CPU内核给容器使用。

内存:限制容器对内存的使用。

Docker stats 查看内存使用情况

创建3个容器,分别对这三台容器进行资源限制,

Docker的资源控制_第2张图片

限制使用swap:想要限制容器使用swap。必须和限制内存一块使用。

如果限制了内存是512.swap是1G,那么容器实际上能够使用swap空间。1g-512m=512m

如果不设置:-m 512m 但是使用swap的空间是 -m 的两倍。

如果设置 --memory-swap的值,和内存限制一样容器就不能够使用swap。

-m 512m --memory-swap=-1,内存受限还是512m,但是容器使用swap空间不受限制。

磁盘I/O配置:读写

Oflag=direct

在使用dd获取空字符集是从文件系统的缓存当中输入,速度是比较快的,禁用文件系统缓存直接把数据写入到磁盘,可以更真实的测试设备的性能,模拟直接写入物理设备的情况。

Docker的资源控制_第3张图片

删除已经停止的容器

删除所有未被使用的网桥设备

删除所有未被使用的镜像

删除创建容器时的缓存,以及无用的数据卷。

你可能感兴趣的:(docker,容器,运维)