docker安全

系统基础安全实验

创建出的容器内存大小与虚拟机一致
docker run -it --name vm1 ubntu
查看内存状态free -m
对比虚拟机和容器
docker安全
查看容器进程的namespace
docker安全
可以看到vm1容器的namespace有六个
查看cgroup进程的路径
docker安全
在/sys/fs/cgroup下
docker安全
依次查看cpu,内存和容器的目录下的文件
docker安全
在memory目录下新建目录时直接会从上级目录继承
在memory目录下创建一个文件夹x1
docker安全
进入到x1文件目录下查看
docker安全
对比可以看到x1文件目录下的文件基本与其父目录memory文件内容一致
因为没有人为的创建文件
对比创建容器的id与其原名称的差距
在创建容器的时候会在/sys/fs/cgroup/memory/docker这个目录底下生成相应容器id的文件夹
创建容器并查看容器的id
docker安全

在/sys/fs/cgroup/memory/docker文件夹下查看容器的原始id
docker安全
对比两者不难发现,在查询的容器的id只是其真实id的一部分

在其id的文件夹下查看对于内存的限制会看到一个数字,不过这么大的数字基本就是接近无限的意思
docker安全

对cpu进行资源限制

实验环境是只有一个cpu
与memory文件夹一样,在cpu目录下创建一个x1文件夹,来继承父目录cpu下的文件配置
docker安全
查看其目录下的几个文件了解cpu对于系统的限制,其中数值-1表示对系统没有限制

cat cpu.cfs_period_us

##查看cpu限制的长度

 cat cpu.cfs_quota_us

##对于时间的限制

dd if=/dev/zero of=/dev/null &

##占用cpu

top

##查看cpu的占有率

docker安全
docker安全
此时cpu已经被沾满了
对cpu的资源进行限制
在x1
将cpu限制的长度修改为20000
将20000这个数值导入到限制cpu长度的文件夹
docker安全
发现现在cpu的占用率还是在100%徘徊
docker安全
将cpu的PID导入到tasks文件中,并再次查看

docker安全
docker安全
可以看到cpu的占有率被很好的控制在20%左右
将对应的进程杀死就在tasks文件里面看不到PID了
docker安全
在容器环境下对cpu进行限制
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:

  • kind: ServiceAccount
    name: admin-user
    namespace: kube-system

apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system

apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system


apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:

  • kind: ServiceAccount
    name: admin-user
    namespace: kube-system
上一篇:[SDOI2009]生日礼物(单调队列)


下一篇:拉勾网python开发要求爬虫