Docker的内存配额及其安全

  • 一、理解Docker安全
  • 1.命名空间隔离的安全
  • 2.控制组资源控制的安全
  • 3.内核能力机制
  • 4.Docker服务端防护
  • 5.其他安全特性
  • 二、容器资源配置
  • 1.CPU限额
  • 2.内存限制
  • 三.docker安全加固
  • 1.设置特权级运行的容器
  • 2.设置容器白名单


一、理解Docker安全

docker如何分配cpu docker硬件配置要求cpu_docker

Docker容器的安全性,很大程度上依赖于Linux系统自身,评估Docker的安全性时,主要考虑以下几个方面:

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_02

1.命名空间隔离的安全

docker如何分配cpu docker硬件配置要求cpu_docker_03

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_04

docker如何分配cpu docker硬件配置要求cpu_Docker_05

2.控制组资源控制的安全

docker如何分配cpu docker硬件配置要求cpu_docker_06


docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_07

3.内核能力机制

docker如何分配cpu docker硬件配置要求cpu_docker_08

4.Docker服务端防护

docker如何分配cpu docker硬件配置要求cpu_Docker_09

5.其他安全特性

docker如何分配cpu docker硬件配置要求cpu_白名单_10

二、容器资源配置

1.CPU限额

docker如何分配cpu docker硬件配置要求cpu_Docker_11

docker如何分配cpu docker硬件配置要求cpu_docker_12


docker如何分配cpu docker硬件配置要求cpu_docker_13


cpu_period 和 cpu_quota 这两个参数需要组合使用,用来限制进程在长度为 cpu_period 的一段时间内,只能被分配到总量为 cpu_quota 的 CPU 时间

docker如何分配cpu docker硬件配置要求cpu_Docker_14

docker如何分配cpu docker硬件配置要求cpu_白名单_15

再添加一个CPU

docker如何分配cpu docker硬件配置要求cpu_白名单_16

docker如何分配cpu docker硬件配置要求cpu_白名单_17

测试两个cpu的争抢问题

如果你是两个cpu的话首先先关掉一个cpu

docker如何分配cpu docker硬件配置要求cpu_Docker_18

docker如何分配cpu docker硬件配置要求cpu_docker_19


退出刚才第二次启用的交互,下面我们可以加一个限制cpu的参数,重新进去,再次查看top中cpu占用情况

docker如何分配cpu docker硬件配置要求cpu_白名单_20


docker如何分配cpu docker硬件配置要求cpu_白名单_21


docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_22

2.内存限制

容器可用内存包括两个部分:

物理内存和swap交换分区。

docker run -it --memory 200M --memory-swap=200M ubuntu
–memory设置内存使用限额
–memory-swap设置swap交换分区限额

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_23


下载libcgroup-tools工具

docker如何分配cpu docker硬件配置要求cpu_白名单_24


docker如何分配cpu docker硬件配置要求cpu_Docker_25


创建一个用来测试内存的目录x1:

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_26


我们可以发现,创建好的目录x1里面拥有很多配置文件

因为它直接继承上级目录下的所有文件!

docker如何分配cpu docker硬件配置要求cpu_Docker_27


docker如何分配cpu docker硬件配置要求cpu_Docker_28


限制上传的内存最大为200M

docker如何分配cpu docker硬件配置要求cpu_docker_29


docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_30

建指定大小的空间,但是我们发现前面已经设置了最大内存为200M,但是创建300M的空间也并不会报错!!

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_31


docker如何分配cpu docker硬件配置要求cpu_白名单_32

那是因为它占用了我们的swap分区的大小!

我们每次创建一定大小空间之后,用free -m查看一下内存情况就明白了!

我们的mem空间并没有使用有效空间都是1432如下图,但是swap空间使用多了100M,这下刚才的疑惑就解决了!!

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_33

关闭swap分区,再添加300M就会直接报错

docker如何分配cpu docker硬件配置要求cpu_白名单_34

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_35

报错!!!!

docker如何分配cpu docker硬件配置要求cpu_白名单_36

三.docker安全加固

利用LXCFS增强docker容器隔离性和资源可见性

docker如何分配cpu docker硬件配置要求cpu_白名单_37


docker如何分配cpu docker硬件配置要求cpu_Docker_38


docker如何分配cpu docker硬件配置要求cpu_白名单_39


docker如何分配cpu docker硬件配置要求cpu_白名单_40


docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_41

1.设置特权级运行的容器

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_42


docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_43

2.设置容器白名单

–cap-add
*–privileged=true 的权限非常大,接近于宿主机的权限,为了防止用户的滥用,需要增加限制,只提供给容器必须的权限
此时Docker 提供了权限白名单的机制,使用–cap-add添加必要的权限。

docker如何分配cpu docker硬件配置要求cpu_Docker_44


docker如何分配cpu docker硬件配置要求cpu_白名单_45


docker如何分配cpu docker硬件配置要求cpu_白名单_46

删除ip:

docker如何分配cpu docker硬件配置要求cpu_docker如何分配cpu_47