文章预览
在上一讲 视觉欺骗小把戏(namespace) 中,我们达成了一个小小的里程碑。此时我们创建的进程,已经在一个独立的根目录下,并且重新挂载了 /proc 文件系统,同时又通过 5 个命名空间隔离了 uts、pid、mnt、ipc、net 等各类信息的访问。 你的两个用户此时已经基本完全分辨不出自己是在使用一台独立的机器,还是处在被你设计的容器中了。 但是,你真的做到了天衣无缝吗? 让用户郁闷的 top 命令 我们来做个实验,在宿主机上把 cpu 打满。 你可以用 C 或者 shell 程序写个死循环来跑,不过这里我们用一个更方便的工具 stress。 在一个 4 核的宿主机上执行下 stress -c 4 命令,这表示启动 4 个进程分别执行一个非常耗 CPU 的程序,意思就是把 4 个 CPU 跑满。 可以看到,用 top 命令查看,每个 stress 进程都占有几乎 100% 的 CPU 运行时间,因为每个 CPU 都被一个 str
………………………………