当前位置: 首页 > 知识库问答 >
问题:

无chroot的LXC

司马德水
2023-03-14

是否有任何方法可以在不创建容器的情况下使用进程组来使用LXC进行资源管理?我正在开发一个在沙箱中运行任意代码的服务,我只对硬件资源管理感兴趣。我不想要任何花言巧语;我只希望这些进程组能够访问主文件系统。

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

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

共有1个答案

贺高杰
2023-03-14

LXC不是一个单一的系统。它是一个内核功能的集合,可以用来以各种不同的方式隔离进程,也是一个用户空间工具,可以一起使用所有这些功能来创建成熟的容器。但是单独的功能仍然可以独立使用,没有LXC。此外,LXC不需要chroot,即使您给它一个chroot,您也可以将目录从主机系统绑定到容器中,在主机和容器之间共享这些特定的目录树。

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

如果您想使用LXC进行轻量级资源管理,可以使用chroot或不使用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上:

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

或者,如果您想拥有一个完全不同的根目录,但仍然共享一些目录,如/usr,您可以将一些目录绑定到一个目录中,并将其用作文件系统的根目录。

因此,您有很多选择,可以根据您的需求选择只隔离一个组件、多个组件或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 权限不足,无法改

  • 问题内容: 有什么方法可以在不创建容器的情况下使用LXC通过进程组进行资源管理?我正在研究一种在沙箱中运行任意代码的服务,对此我只对硬件资源管理感兴趣。我不要生根发芽;我只希望这些进程组可以访问主文件系统。 有人告诉我lxc重量轻,但是我看到的所有示例都为每个lxc进程创建了一个新容器(即具有完整OS的目录)。我真的没有看到它比其他任何VM解决方案轻得多。 那么,有什么方法可以将LXC用于控制和管

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

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