没有 chroot 的 LXC

2023-11-23

有没有办法在不创建容器的情况下使用LXC使用进程组进行资源管理?我正在开发一个在沙箱内运行任意代码的服务,我只对硬件资源管理感兴趣。我不想进行任何 chrooting;我只希望这些进程组能够访问主文件系统。

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

那么有没有一种方法可以使用 LXC 来控制和管理多个进程组,而无需为每个进程组创建单独的容器呢?


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

例如,LXC 使用 cgroup 来设置容器的资源限制。但它们可以用来设置进程组的资源限制,而无需使用 LXC 工具。你可以操纵/sys/fd/cgroup/memory or /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 over /home容器内:

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

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

因此,您有很多选择,可以根据您的需求选择隔离一个组件、多个组件或 LXC 支持的多个组件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有 chroot 的 LXC 的相关文章

  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 在 LINUX 上使用 Python 连接到 OLAP 多维数据集

    我知道如何在 Windows 上使用 Python 连接到 MS OLAP 多维数据集 嗯 至少有一种方法 通常我使用 win32py 包并调用 COM 对象进行连接 import win32com client connection wi
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte

随机推荐

  • 实例作为静态类属性

    是否可以在 PHP 中将类的实例声明为属性 基本上我想要实现的是 abstract class ClassA static property new ClassB 好吧 我知道我不能这样做 但是除了总是做这样的事情之外还有什么解决方法吗 i
  • Reactjs 可以以编程方式处理 :before 吗?

    我必须以某种方式以编程方式设置宽度 before for a div div div 我如何定义someStyle这样的宽度 before of something div可以相应改变吗 是的 您可以通过编程方式更改 React 中的 be
  • 如何使用 Indy 10 和 OpenSSL 通过 HTTPS 下载文件?

    我有以下任务 使用 HTTPS 和身份验证下载文件 Indy 似乎是可行的方法 但由于某种原因它到目前为止还不起作用 我已做好以下准备 我用于下载的 TIdHTTP 组件 用于创建 URL 的 TIdURI 组件 应提供安全连接的 TIdS
  • 如何针对多个验证组进行验证?

    我有两个验证组 父组和子组 我有一个添加按钮 只需验证子验证组 这很容易完成 保存按钮需要针对客户端和服务器端的父验证组和子验证组进行验证 我想我知道如何通过为每个组调用 Page Validate groupname 方法来在服务器端完成
  • 使用 C# 中的 .Pem/.Pkcs8 密钥文件中的 MD5WithRSA 对数据进行签名

    我有以下 Java 代码示例 我需要在 C 中重新制定它 PKCS8EncodedKeySpec privKeySpec new PKCS8EncodedKeySpec pkcs8PrivateKey KeyFactory keyFacto
  • clang 和 gcc 之间 const 引用三元运算符的地址差异

    我对这里发生的事情有一个模糊的想法 这与this但我想知道为什么 clang 和 g 处理这个问题的方式不同 这里未定义的行为在哪里 注意 这与模板无关 我只是使用它们来使示例更加紧 凑 这都是关于类型的whatever include
  • 实用程序类是邪恶的吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我看到这个问题 如果 实用程序 类是邪恶的 我该将通用代码放在哪里 我想 为什么实用程序类是邪恶的 假设我有一个深度为数十个类的领域模型 我需要能够对实例进行 xml 化 我是否在父级上创
  • 为什么 for_each 不能修改其函子参数?

    http www cplusplus com reference algorithm for each 一元函数取一个元素 范围作为参数 这可以 是一个指向函数或 其类重载的对象 操作员 它的返回值 如果有的话 被忽略 根据这篇文章 我预计
  • 整数除法返回 0

    我觉得我错过了一些明显的东西 我正在尝试测试的分布random 这是表格 create table test id int random float float random int int 这是我想做的 truncate table te
  • Sphinx HTML 输出的搜索功能的不同 URL 参数有何影响?

    Sphinx 生成的 HTML 文档包括一个搜索界面 例如 在 Python 官方文档中搜索术语 popen 时 将构造以下 URL 不同的 URL 参数有什么影响 Sphinx 生成的 HTML 文档的搜索执行完全基于 JavaScrip
  • 出现滚动条时 FireFox 中的长页面偏移

    在 Firefox 和 Safari 中 当页面足够长以显示滚动条时 居中的页面会移动几个像素 如果您浏览一个具有长页面和短页面的网站 页面似乎会 跳跃 IE7 倾向于让滚动条始终可见 但在页面不够长时将其禁用 由于 HTML 窗口的宽度永
  • Symfony 4 - KnpPaginator Bundle“找不到服务,即使它存在于应用程序的容器中”

    我一直在关注教程 所有说明都显示它是以完全相同的方式完成的 但它似乎在 Symfony 4 中不起作用 是否有我忽略的东西 或者捆绑包根本不兼容 I ran composer require knplabs knp paginator bu
  • 如何使用 jest 和 React 测试库测试调用提交表单的按钮

    所以我试图测试 onSubmit 函数是否在单击按钮时被触发 我这样做的方式是通过测试 onSubmit 函数的内部正在获取调用 axios post 方法 the test describe RecipeSearch gt test su
  • 关于Android中SQLite数据库游标的几个问题

    为了在我的应用程序中实现数据库访问 我遵循拉尔斯 沃格尔教程 但我对一些事情感到非常困惑 每次拨打电话时fetchTodo将创建并返回一个新游标 将前一个光标留给垃圾收集器 所以 如果我不使用startManagingCursor甚至是Cu
  • Android 应用程序中的 API 密钥等敏感全局信息存储在哪里?

    我需要在 Android 应用程序中存储一些敏感信息 如果我将其放入资源文件中 则其他应用程序只需使用以下命令即可浏览和读取该文件似乎是微不足道的PackageManager getResourcesForApplication 放置此类信
  • sqlalchemy,用DSN指定数据库名称

    我正在尝试使用以下命令从 Linux 连接到 SQL Serversqlalchemy 这一页显示基于 DSN 的连接 如下所示 engine create engine mssql pyodbc scott tiger some dsn
  • 如何让 PHP 回显 XML 标签?

    我正在开发一个具有大约 3 000 4 000 个动态生成页面的网站 并且我希望更新 XML 站点地图 我过去曾尝试使用在线生成器 但它们似乎从未正确捕获所有页面 所以我打算自己做一些事情 基本上我有类似的东西
  • 如何使用 AutoFac 解析正确的记录器类型?

    我正在更新一个使用 AutoFac 的遗留项目 并且我想将 NLog 与 Simple Logging Facade SLF 结合使用 我过去曾在 Ninject 中使用过它 它的设置非常简单 我只需要执行以下操作 kernel Bind
  • 如何在 JavaScript 中匹配整个单词?

    我试图通过文本框搜索整个单词 假设我搜索 me 我应该找到文本中所有出现的 me 一词 但不能找到 memmm 我正在使用 JavaScriptsearch my regex expression 执行当前搜索 没有成功 经过多次提议使用
  • 没有 chroot 的 LXC

    有没有办法在不创建容器的情况下使用LXC使用进程组进行资源管理 我正在开发一个在沙箱内运行任意代码的服务 我只对硬件资源管理感兴趣 我不想进行任何 chrooting 我只希望这些进程组能够访问主文件系统 有人告诉我 lxc 是轻量级的 但