研究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/netIP 地址、网卡、路由等)。后台进程可以运行在不同命名空间内的相同端口上,用户还可以虚拟出一块网卡。

CLONE_NEWNS: 挂载命名空间,进程运行时可以将挂载点与系统分离,使用这个功能时,我们可以达到 chroot 的功能,而在安全性方面比 chroot 更高。

CLONE_NEWUTS: UTS 命名空间,主要目的是独立出主机名和网络信息服务(NIS)。

CLONE_NEWUSER: 用户命名空间,同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID

docker隔离与cgrep_第1张图片