我最近一直在研究 LXC,其中一件事我无法弄清楚,那就是 Ubuntu 中的 LXC 如何实现命名空间 - 特别是 PID 命名空间。
我似乎无法在 /proc 中找到对 PID 命名空间的任何引用。例如:
vagrant@precise64:~$ ps -ef|grep lxc-start
root 19096 1 0 Oct27 ? 00:00:00 lxc-start -n mysecond -d
vagrant 21431 1037 0 00:28 pts/0 00:00:00 grep --color=auto lxc-start
vagrant@precise64:~$ sudo ls -l /proc/19096/ns/
total 0
-r-------- 1 root root 0 Oct 27 22:09 ipc
-r-------- 1 root root 0 Oct 27 22:09 net
-r-------- 1 root root 0 Oct 27 22:09 uts
vagrant@precise64:~$
现在我可以看到 ipc、net 和 uts 命名空间确实存在,但没有 PID 命名空间的迹象。我确信我遗漏了某些东西,因为 PID 命名空间似乎确实有效 - 当我连接到容器的控制台并运行时,ps -ef
它确实只返回在 LXC 内运行的进程列表 - 而不是主机上运行的所有进程。
有人知道我应该寻找什么吗?谢谢
答案1
你需要一个足够新的内核,根据作者的说法,是 3.8 或更高版本博客。