【问题标题】:Can containers be implemented purely in userspace?容器可以纯粹在用户空间中实现吗?
【发布时间】:2014-07-30 16:04:02
【问题描述】:

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

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

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

我更多地考虑将充当衍生程序和 Linux 内核之间的中介的进程。您将使用作为参数生成的程序开始该过程;它会跟踪他们进行的系统调用,并阻止或重定向访问真实根文件系统、真实网络设备等的尝试,而不依赖于特殊的内核功能。

这样的事情是否可以安全地实现,并且可以由受限用户(即不像 chroot 那样具有特权)有效地调用?

总而言之:LXC 之类的纯用户空间实现是否可行?如果是,在用户空间这样做会受到什么惩罚?如果没有,为什么不呢?

【问题讨论】:

    标签: linux containers virtualization


    【解决方案1】:

    令人惊讶的是,答案是“是”:这就是 systrace 和 sysjail 所做的。

    http://sysjail.bsd.lv/

    而且它们在现代操作系统上也天生不安全。

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

    因此,如果您想要正确的沙盒,则必须在内核空间中完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2015-03-19
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多