Docker的容器安全

Docker安全演示
1.docker与系统共享内核并且会在宿主机上产生相应的进程
容器内
在这里插入图片描述

宿主机内
在这里插入图片描述
2.cgroup
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cgroup目录下有对容器进行相应限制的参数,如cpu,memory等,新建的容器的id会出现在象形限额的docker的目录下,并且如果在相应memory目录下建立目录,那么目录会继承相应memory目录的属性。

3.cgroup之cpu限额
运行docker容器指定相应的限额
运行docker容器指定相应的限额:
docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu /bin/bash
cpu_period和cpu_quota这两个参数需要组合使用,用来限制进程在长度为cpu_period的一段时间内,只能被分配到总量为cpu_quota的cpu时间,以上设置表示20%的cpu时间。

a.在/sys/fs/cgroup目录下建立目录xl,该目录会继承cpu的相应性能,查看cpu的相应限额
在这里插入图片描述
b.该目录就相当于一个容器,在该容器下面进行相应的操作并且查看cpu的相应使用效率
在这里插入图片描述

可以发现该进程的cpu占用率接近为100%
在这里插入图片描述
若有两个cpu同时在使用,可以将其中一个关闭
[root@server1 cpu1]# pwd
/sys/fs/cgroup/cpu
[root@server1 cpu1]# cat onine ##在其中要关掉的cpu的目录下查看咋在线文件中显示为1
[root@server1 cpu1]# echo 0 online ##在该文件中输入0再次查看在线的cpu就变为1个
c.修改cpu使用率文件中的参数
在这里插入图片描述

d.查看上次进行测试的实验进程,并且将进程编号导入cpu下的xl目录中的tasks文件中,再次执行top命令查看该进程cpu使用率发现其变为20%左右
在这里插入图片描述

4.cgroup之memeory限额
运行dokcer容器指定相应的memory参数:
docker run -it --memory 200M --memory-swap=200M ubuntu
容器可用于包括两个部分:物理内存和swap交换分区
–memory设置内存使用限额
–memory-swa设置swap交换分区限额

a.下载相应对cgrou的memory进行操作的相应软件
[root@server1 xl]# yum search cgroup
[root@server1 xl]# yum install -y libcgroup-tools.x86_64
b.在相应的memory目录下建立新的目录
在这里插入图片描述
c.修改memory限额为300M(以字节计算)
在这里插入图片描述
d.在/dev/shm对内存进行相应的操作测试
未超過內存使用率時,未使用swap分區
在这里插入图片描述
超過內存使用率時,使用swap分區
在这里插入图片描述
e.修改相應的memory的swap分區內存使用修改成300M
在这里插入图片描述
f.再次對/dev/shm进行操作,当再次截取文件大小为400M时,swap分区会拒绝
在这里插入图片描述
g.删除文件查看大小发现少的300M是当时设置的限额
在这里插入图片描述
利用LXCFS增强docker容器隔离性和资源可见性
在运行容器时指定了容器的相应的内存大小及其相应的swap分区大小,但是在容器内查看时发现其使用率相应大小还是与宿主机相同,因此容器的隔离性不好。
在这里插入图片描述
[root@server1 ~]# yum install -y lxcfs-2.0.5-3.el7.centos.x86_64.rpm

在这里插入图片描述
运行容器并且指定相应的挂载点添加相应的权限
[root@server1 lxcfs]# docker run -it -m 300m -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw -v /var/lib/lxcfs/proc/stat:/proc/stat:rw -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw --name ubuntu -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw -v /var/lib/lxcfs/proc/stat:/proc/stat:rw -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw ubuntu

//运行完成之后查看时发现设置的与运行容器时设置的参数相同

在这里插入图片描述

设置特权级运行的容器:–privileged=true
有的时候我们需要容器具备更多的权限,比如操作内核模块,控制swap交换分区,挂载USB磁盘,修改MAC地址等。

在这里插入图片描述
添加–privileged=true参数运行容器,执行相应的操作发现不会被拒绝
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值