为什么要使用lxc而不是chroot?


10

一台ubuntu服务器在单独的域上托管3个应用程序。
每个应用都有自己的开发人员。
应用开发人员属于linux“ sftp”组。
chroot允许每个应用程序开发人员访问密码sftp。

/home/app1/prod
/home/app2/prod
/home/app3/prod

在sshd_config中

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

我们关注的是一个应用程序中的编程漏洞,导致其他两个应用程序中的问题。

我们应该使用lxc容器而不是chroot吗?为什么?对lxc容器的更改对应用程序开发人员是否透明?


2
唯一要做的chroot是更改进程的根目录。它没有提供隔离或其他任何功能。
Zoredache

Answers:


14

Linux容器(LXC)是一种操作系统级虚拟化方法,用于在单个控制主机上运行多个隔离的服务器安装(容器)。LXC不提供虚拟机,而是提供具有自己的进程和网络空间的虚拟环境。它类似于chroot,但是提供了更多的隔离。

Linux容器具有以下功能/优点:

好处:

与chroot(chroot监狱)相比,隔离效果更好。低开销。LXC使用最少的RAM和硬盘空间资源,而无需在虚拟机(VMWare / VirtualBox / KVM)中安装来宾OS的开销。

应用程序和服务(服务器)以本机速度运行。

libvirt中支持Linux容器。

Linux容器可与btrfs配合使用。

但也有一个缺点:

Linux容器在Linux内核上运行Linux进程。这意味着您可以运行Linux(Ubuntu主机上的Fedora容器),但不能运行其他操作系统(不是BSD / OSX / Windows)。

没有用于配置或管理容器的GUI(图形)界面。

关于如何安装和配置容器的文档很少。配置容器需要一定的技术知识和技能(并且需要很大的耐心)。


1
LXC内部使用哪个内核?(是来自主持人还是来自来宾?)
Francesco

4
LXC与完全虚拟化相比有很多优点和缺点,这与提出的问题无关,甚至可能引起误解。
罗杰·杜克

@Francesco,使用LXC(通常是Linux容器),只有一个内核-主机内核。某些例外情况是,例如,在MacOS或Windows上运行的Docker,因为它们使用在虚拟机中运行的Linux内核。但是,这些平台上的所有Linux容器仍使用相同的内核。
愤怒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.