容器可以纯粹在用户空间中实现吗?

时间:2014-07-30 16:04:02

标签: linux containers virtualization

Linux现在有很多容器机制:LXC,Docker,lmctfy,OpenVZ,Linux-VServer等。所有这些都涉及内核补丁或最近添加的Linux功能,如cgroups和seccomp。

我想知道是否有可能纯粹在用户空间中实现类似的(操作系统级别)虚拟化。

已经有了先例 - 用户模式Linux。但是,它还需要特殊的内核功能才能合理快速和安全。此外,它实际上是在用户空间中运行的Linux内核,这使得网络设置相当困难。

我更多地考虑一个过程,它将作为衍生程序和Linux内核之间的中介。你可以用程序作为参数来生成程序;它会跟踪他们所做的系统调用,并阻止或重定向尝试访问真正的根文件系统,真实的网络设备等,而不依赖于特殊的内核功能。

这样的事情是否可以安全地实施,并且可以被有限的用户有效地调用(即没有像chroot这样的特权)?

总结:LXC之类的纯用户空间实现是否可行?如果是,那么在用户空间中进行处罚会受到什么惩罚?如果不是,为什么不呢?

1 个答案:

答案 0 :(得分:0)

令人惊讶的是,事实证明答案是"是":这就是systrace和sysjail的作用。

http://sysjail.bsd.lv/

而且它们在现代操作系统中本质上也是不安全的。

http://www.watson.org/~robert/2007woot/

因此,如果您需要适当的沙盒,则必须在内核空间中完成。