有没有办法在不创建容器的情况下使用LXC进行资源管理?我正在开发一个在沙盒中运行任意代码的服务,我只对硬件资源管理感兴趣.我不想要任何chrooting;我只是希望这些进程组能够访问主文件系统.
我被告知lxc重量很轻,但是我看到的所有示例都为每个lxc进程创建了一个新容器(即带有完整操作系统的dir).我真的没有看到它比其他任何VM解决方案都轻得多.
那么有没有什么方法可以用LXC来控制和管理多个进程组,而无需为每个进程组创建单独的容器?
解决方法:
LXC不是一个单片系统.它是一组内核功能,可用于以各种不同的方式隔离进程,以及用户空间工具,可以将所有这些功能一起用于创建完整的容器.但是,没有LXC,个别功能仍可单独使用.此外,LXC不需要chroot,即使你给它一个chroot,你也可以将目录从主机系统绑定到容器中,在主机和容器之间共享那些特定的目录树.
例如,LXC使用cgroup来设置容器的资源限制.但它们可用于在不使用LXC工具的情况下为进程组设置资源限制.您可以直接操作/ sys / fd / cgroup / memory或/ sys / fs / cgroup / cpuacct,将进程放入限制允许使用的内存或CPU数量的cgroup中.或者,如果您使用的是systemd系统,则可以使用给定服务的.service文件中的MemoryLimit = 200M等控制一组进程的内存限制.
如果您想使用LXC进行轻量级资源管理,您可以使用或不使用chroot.启动LXC容器时,您可以选择要隔离的资源;所以你可以创建一个只有虚拟化网络的容器,而不是别的东西;或仅具有内存限制的容器,但与主机共享其他所有内容.唯一要隔离的东西是容器配置文件中指定的东西.例如,lxc附带了几个仅隔离网络的示例容器定义;他们与主机共享一个根分区和几乎所有其他东西.以下是如何运行与主机系统相同的容器,除了它没有网络接口:
sudo lxc-execute -n foo -f /usr/share/doc/lxc/examples/lxc-no-netns.conf /bin/bash
如果您想要与主机共享某些文件,而不是其他文件,则有两种选择;您可以使用共享的根目录,并挂载您希望在容器中不同的文件;或者您可以使用chroot,但挂载您想要在容器*享的文件.
例如,这是除了/ home之外与主机共享所有内容的容器的配置;而是在容器内绑定-mounts / home / me / fake-home over / home:
lxc.mount.entry = /home/me/fake-home /home none rw,bind 0 0
或者如果你想拥有一个完全不同的根,但仍然共享某些目录,比如/ usr,你可以将几个目录绑定到一个目录中,并将其用作文件系统的根目录.
因此,您有很多选择,并且可以根据您的需要选择仅隔离一个组件,多个组件或LXC支持的组件.