ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – 没有chroot的LXC

2019-10-04 07:50:25  阅读:332  来源: 互联网

标签:linux lxc cgroups


有没有办法在不创建容器的情况下使用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支持的组件.

标签:linux,lxc,cgroups
来源: https://codeday.me/bug/20191004/1852343.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有