为什么使用lxc而不是chroot?

一个Ubuntu服务器托pipe3个应用程序全部在不同的域。
每个应用程序都有自己的开发者
应用程序开发人员属于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容器的更改对于应用程序开发人员是否透明?

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

Linux容器有几个特点/好处:

优点:

与chroot(chroot jail)相比更好的隔离。 低开销。 LXC在内存和硬盘空间方面使用的资源最less,无需在虚拟机(VMWare / VirtualBox / KVM)中安装客户操作系统的开销。

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

在libvirt中支持Linux容器。

Linux容器和btrfs很好的兼容。

但也有一个缺点:

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

没有GUI(graphics)接口来configuration或pipe理容器。

有关如何安装和configuration容器的文档很less。 configuration一个容器需要适度的技术知识和技能(以及大量的耐心)。