docker隔离与cgrep
研究cgroup的作用和基本用法:yum install libcgroup #控制cpu,内存,io示例
blkio : 这个子系统设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。
cpu : 这个子系统使用调度程序为cgroup任务提供cpu的访问。
cpuacct : 产生cgroup任务的cpu资源报告。
cpuset: 如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。
devices : 允许或拒绝cgroup任务对设备的访问。
freezer : 暂停和恢复cgroup任务。
memory: 设置每个cgroup的内存限制以及产生内存资源报告。
net_cls : 标记每个网络包以供cgroup方便使用。
ns : 名称空间子系统。
perf_event: 增加了对每group的监测跟踪的能力,即可以监测属于某个特定的group的所有线程以及 运行在特定CPU上的线程,此功能对于监测整个group非常有用
研究Linux中的命名空间隔离技术:
Linux 2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。它们的出现,使用户创建的进程能够与系统分离得更加彻底,从而不需要使用更多的底层虚拟化技术。
CLONE_NEWIPC: 进程间通信(IPC)的命名空间,可以将 SystemV 的 IPC 和 POSIX 的消息队列独立出来。
CLONE_NEWPID: 进程命名空间。空间内的PID 是独立分配的,意思就是命名空间内的虚拟 PID 可能会与命名空间外的 PID 相冲突,于是命名空间内的 PID 映射到命名空间外时会使用另外一个 PID。比如说,命名空间内第一个 PID 为1,而在命名空间外就是该 PID 已被 init 进程所使用。
CLONE_NEWNET: 网络命名空间,用于隔离网络资源(/proc/net、IP 地址、网卡、路由等)。后台进程可以运行在不同命名空间内的相同端口上,用户还可以虚拟出一块网卡。
CLONE_NEWNS: 挂载命名空间,进程运行时可以将挂载点与系统分离,使用这个功能时,我们可以达到 chroot 的功能,而在安全性方面比 chroot 更高。
CLONE_NEWUTS: UTS 命名空间,主要目的是独立出主机名和网络信息服务(NIS)。
CLONE_NEWUSER: 用户命名空间,同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID。
页:
[1]