Docker第八回(docker资源限制和验证)
Posted baomaggie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker第八回(docker资源限制和验证)相关的知识,希望对你有一定的参考价值。
一、docker资源限制
docker能够运行起来要依赖于内核中的两个特性,namespaces和CGroups。默认情况下,容器是没有任何资源限制的,因此它能够耗尽主机上内核能分配给该容器的所有资源。因此,为了防止一个容器的运行中耗尽主机所有的资源,就需要用到资源限制。而资源限制的一些功能特性需要linux 内核支持 Linux Capabilities,在docker 1.13版本之前,只支持CFS schedule(Completely Fair Scheduler 完全公平调度器),之后的版本还支持realtime schedule
CFS schedule:每个进程都有优先级,非实时进程的优先级从100-139,CSF schedule是用来调度这些非实时进程的调度器,优先级高的进程会先被cpu执行
realtime schedule:实时进程调度器,进程的优先级从0-99,realtime schedule是专门调度实时进程的调度器
二、docker的memory、cpu资源限制参数
1、cpu限制
--cpus=<value>:指定一个容器可以使用多少可用cpu资源,如果是4核cpu,可以设置为1.5,那么该容器最多只能使用1.5核的cpu资源,如果没有设置--cpuset-cpus,那么可以使用的1.5核可以是任意一个核心的资源。此选项只能在docker1.3以上版本中使用
--cpu-shares:为容器按比例分配cpu资源,如果其他容器的cpu资源是空闲,那么容器1如果需要,将会使用所有cpu的资源,且将任务分配到任意核心处理
--cpuset-cpus:为容器指定可以使用的cpu核心是哪个,如果cpu是4和,那么按照编号0-3区分每一个核心,此参数设置为0,1即表示可以使用cpu的第一个和第二个核心。
2、memory以及swap限制
--memory=<value>:为容器指定最多可以使用多少内存,如果一个进程使用的内存超过了限制,那么可能会被kill掉
--memory-swap:为容器指定最多可以使用多少swap空间,此选项必须要在使用了--memory参数的前提下才能使用,如果没有设置--memory参数,那么这个参数不会生效
-- memory-swappiness:设置容器使用swap的倾向性有多大,0-100。
-- memory-reservation:容器使用内存的软限制,这个指一定要设置的比--memory小,当系统内存紧张时,会回收掉此容器的memory值-reservation值的内存,让容器的内存使用降到reservation的标准
--oom-kill-disable:当容器内进程发生oom时,是否杀掉该容器
三、使用压测工具进行测试
1、测试内存
1.1、不限制cpu使用
可以看到,cpu使用已经满了
1.2、重新启动容器加入内存限制参数
设置的参数生效
2、测试内存
2.1、不限制内存使用,压测指定了2个内存,每个128m
而实际使用了256M内存
2.2、重新启动容器,加入内存限制
--memory限制容器只能使用128m内存
以上是关于Docker第八回(docker资源限制和验证)的主要内容,如果未能解决你的问题,请参考以下文章