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支持的组件。



