当前位置: 首页 > 面试题库 >

没有chroot的LXC

张茂勋
2023-03-14
问题内容

有什么方法可以在不创建容器的情况下使用LXC通过进程组进行资源管理?我正在研究一种在沙箱中运行任意代码的服务,对此我只对硬件资源管理感兴趣。我不要生根发芽;我只希望这些进程组可以访问主文件系统。

有人告诉我lxc重量轻,但是我看到的所有示例都为每个lxc进程创建了一个新容器(即具有完整OS的目录)。我真的没有看到它比其他任何VM解决方案轻得多。

那么,有什么方法可以将LXC用于控制和管理多个过程组,而不必为每个过程组创建单独的容器?


问题答案:

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



 类似资料:
  • 是否有任何方法可以在不创建容器的情况下使用进程组来使用LXC进行资源管理?我正在开发一个在沙箱中运行任意代码的服务,我只对硬件资源管理感兴趣。我不想要任何花言巧语;我只希望这些进程组能够访问主文件系统。 我被告知lxc是轻量级的,但是我看到的所有例子都为每个lxc进程创建了一个新的容器(即一个带有完整操作系统的目录)。我真的不明白这是如何比任何其他虚拟机解决方案轻得多。 那么,是否有任何方法可以使

  • 描述 (Description) 此函数的作用类似于系统调用的相同名称:它使命名目录成为所有其他路径名的新根目录,这些路径名以您的进程及其所有子进程开头。 出于安全原因,此函数与系统chroot()函数相同,仅限于超级用户,无法撤消。 如果省略了FILENAME,那么它会为$ _做一个chroot 语法 (Syntax) 以下是此函数的简单语法 - chroot EXPR chroot 返回值

  • chroot(改变根目录) 相关函数 chdir 表头文件 #include<unistd.h> 定义函数 int chroot(const char * path); 函数说明 chroot()用来改变根目录为参数path 所指定的目录。只有超级用户 才允许改变根目录,子进程将继承新的根目录。 返回值 调用成功则返回0,失败则返-1,错误代码存于errno。 错误代码 EPERM 权限不足,无法

  • chroot 改变根目录 相关函数 chdir 表头文件 #include<unistd.h> 定义函数 int chroot(const char *path); 函数说明 chroot()用来改变根目录为参数path 所指定的目录。只有超级用户才允许改变根目录,子进程将继承新的根目录。 返回值 调用成功则返回0,失败则返-1,错误代码存于errno。 错误代码 EPERM 权限不足,无法改

  • 本文档叙述如何构建一个 chrooted 环境的必要步骤, 以改变系统根目录的位置. 这样在此chroot环境上编译测试就不会有影响到宿主系统的风险. 宿主系统可以是安装在硬盘上的Slitaz也可以是其他Linux发行版,如 Debian, Fedora, PCLinuxOS 等等. 要构建一个Chroot环境,你所需要的仅仅是一个可用的Slitaz ISO镜像和一点点时间. 注意所有命令都是以管

  • 本文向大家介绍linux chroot命令详解,包括了linux chroot命令详解的使用技巧和注意事项,需要的朋友参考一下 chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 /,即以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置。 基本语法 具体用法请参考