LXC没有chroot

有没有办法使用LXC进行资源pipe理使用进程组而不创build容器? 我正在处理一个在沙箱内运行任意代码的服务,对此我只对硬件资源pipe理感兴趣。 我不想要任何chroot; 我只想让这些进程组访问主文件系统。

我被告知lxc是轻量级的,但是我看到的所有例子都为每个lxc进程创build了一个新的容器(即一个完整的操作系统)。 我真的不明白这比其他任何虚拟机解决scheme都要轻得多。

那么是否有任何方式可以使用LXC来控制和pipe理多个进程组,而无需为每个进程创build单独的容器?

Solutions Collecting From Web of "LXC没有chroot"

LXC不是一个单一的系统。 这是一组可用于以各种不同方式隔离进程的内核功能,以及一个将所有这些功能一起使用以创建完整容器的用户空间工具。 但是单独的功能仍然可以使用,没有LXC。 而且,LXC不需要chroot,甚至当你给它一个chroot的时候,你也可以将主机系统的目录绑定到容器中,在主机和容器之间共享这些特定的目录树。

例如,LXC使用cgroup来设置容器的资源限制。 但是它们可以用来设置进程组的资源限制,而不用使用LXC工具。 您可以直接操作/sys/fd/cgroup/memory/sys/fs/cgroup/cpuacct ,将进程放入cgroup中,以限制它们允许使用的内存或CPU的数量。 或者,如果您在使用systemd的系统上,则可以使用MemoryLimit=200M.service文件中针对给定服务的类似内容来控制一组进程的内存限制。

如果你想使用LXC做轻量级的资源管理,你可以使用或不使用chroot。 启动LXC容器时,可以选择要分离的资源; 所以你可以创建一个只有虚拟化网络的容器,而不是别的; 或只有内存限制的容器,但与主机共享其他所有内容。 唯一的东西是孤立的是在你的容器的配置文件中指定的东西。 例如, lxc带有几个仅隔离网络的示例容器定义; 他们共享一个根分区,几乎与主机一起分享。 以下是如何运行与主机系统相同的容器,但没有网络接口:

  sudo lxc-execute -n foo -f /usr/share/doc/lxc/examples/lxc-no-netns.conf /bin/bash 

如果你想要一些文件与主机共享,而不是其他的,你有两个选择; 你可以使用一个共享的根目录,并将其挂载在容器中不同的文件上; 或者你可以使用chroot,但是安装你想要在容器中共享的文件。

例如,以下是容器的配置,除了/home之外,它与主机共享所有内容; 而是在容器中绑定/home/me/fake-home /home

 lxc.mount.entry = /home/me/fake-home /home none rw,bind 0 0 

或者,如果你想拥有一个完全不同的根目录,但是仍然可以共享像/usr这样的目录,你可以将几个目录绑定到一个目录中,然后用它作为文件系统的根目录。

所以你有很多选择,可以根据你的需要选择隔离一个组件,多个或LXC支持的组件。