Docker 安全策略之 Cgroup

Cgroup用于限制容器对CPU、内存等关键资源的使用,防止某个容器独占消耗超过安全阈值的宿主机资源。

1,限制CPU

        Docker 能够指定一个容器的CPU相对执行权重,每个容器默认权重为1024。假设AB两个容器同时运行在一个宿主机上,A容器权重为1024,B容器权重为512,那么他们的资源分配率分别为66.6%和33.3%,但是如果B容器完全空闲,则A容器可以使用使用属于B容器的CPU资源。

        例如,可以设置容器CPU权重为100,如下:         

$ docker run --rm -it -c 100 ubuntu /bin/bash

        另一方面,也可以设置容器对CPU资源的使用上限,每个0.5秒,只允许该ubuntu 容器运行0.25秒。如下:

$ docker run --rm -it --cpu-period=500000 --cpu-quota=250000 ubuntu /bin/bash

2,限制内存

      一般来说,生产环境必须限制容器的内存使用量。命令如下:

$ docker run --rm -it -m 200M ubuntu /bin/bash

      这个例子可将该容器可使用的内存限制在200MB,不过因为Linux 的内存机制特性,当内存不足时会将部分内存置换到swap分区里,因此如果只限制内存使用量,可能会导致swap分区被用过。此时,可通过--memory-swap参数限制容器对swap分区的使用。如果只是指定-m 而不指定 --memroy-swap,那么总的虚拟内存大小(虚拟内存=内存+swap大小)是-m参数的两倍

3,限制块设备I/O

      Docker 能设置容器的I/O权重,还允许你直接限制磁盘的读写速率,对应的参数有:

      --device-read-bps:磁盘每秒最多可以读多少比特(bytes)

      --device-write-bps:磁盘每秒最多可以写多少比特(bytes)

参考资料:

1,《Docker进阶与实战》

2,https://www.sohu.com/a/165506573_609513

猜你喜欢

转载自www.cnblogs.com/chuyuan/p/12197446.html