2014-10-31 32 views
1

我想在redhat中设置一个容器。容器也应该运行与主​​机相同的redhat版本。在探索这些时,我遇到了virsh和码头工。 Virsh支持基于主机的容器并与主机共享用户空间。这里我对用户空间感到困惑。无论是文件系统空间还是其他一些东西。任何人都可以澄清我呢?还可以在哪些场景/案例中使用virsh(基于主机的容器),以便我可以得出结论:是否更好使用virsh或docker。在我的情况下,我需要在redhat主机中设置一个redhat容器,并在每个容器中运行同一进程的多个实例。容器应该在不使用网络接口的情况下相互交换数据。使用virsh创建共享容器和主机用户空间

回答

0

当前的内核还不支持用户命名空间。 这是当前集装箱化解决方案的已知限制。不幸的是,在最新的内核版本(从内核3.8开始)http://kernelnewbies.org/Linux_3.8中实现了用户名空间,尽管它在许多主流发行版中尚未启用。

这是现在容器最强的限制之一,如果您是容器中的根(ID 1),则您是操作容器的机器的根。

这是一个影响任何基于LXC的产品的问题,尽管强烈推动解决这个问题。这实际上是一件需要的事情!

替代方案是艰苦的Selinux监禁或与低级用户帐户和分配不同的用户每个容器。

从Libvirt库文件https://libvirt.org/drvlxc.html

用户和组隔离 如果客户配置没有列出任何ID映射,然后在容器内使用的用户ID和组ID将匹配那些在容器外部使用。另外,与容器中的进程相关联的功能将推断它们对于主机中的进程相同的特权。这对安全性有明显的影响,因为容器内的root用户将能够访问容器可见的任何由root拥有的文件,并且执行或多或少的任何特权内核操作。在没有sVirt额外保护的情况下,这意味着容器内的root用户实际上和主机中的root用户一样强大。没有根用户的安全隔离。

引入了ID映射工具以允许更严格地控​​制容器内用户的特权。它允许应用程序定义诸如“容器映射中的用户ID 0到主机中的用户ID 1000”之类的规则。另外,与功能相关的特权有所减少,因此它们不能用于从容器环境中退出。对用户命名空间的完整描述超出了本文的范围,但是LWN对这个主题有很好的描述。从libvirt的角度来看,要记住的关键是为容器XML配置中的用户和组定义一个ID映射,使libvirt激活用户命名空间功能。

+0

我相信他问共享用户空间与否,与用户的命名空间混淆:http://rhelblog.redhat.com/2015/07/07 /最新-下一对的容器用户名字空间/ – fatherlinux 2015-07-30 19:52:59

相关问题