用简单的英语解释什么是 LXC 以及它的用处

Dan*_*ier 9 linux containers lxc

  • 什么是LXC?
  • 它有什么用?
  • LXC 和普通虚拟化有什么区别?

sys*_*138 24

如果“普通英语”是指非技术人员,则无法轻松解释其中的区别。那头发太细了,不仔细考虑就分不开。

如果“简单英语”是指与技术人员交谈的管理类型,因此至少对技术主题有一定的了解,我提交以下措辞:


它是一种不同形式的虚拟化。

如果您查看 VMWare ESXi,就会发现这是一个运行所谓完全虚拟化的完整虚拟机管理程序。在硬件之上运行的虚拟化系统之间有一个非常小的层。有完整的硬件虚拟化,其中运行在虚拟机中的操作系统完全独立于管理程序本身,并提供它所期望的所有硬件。

再进一步,看看像 VMWare Player、Workstation、ESX(不是 ESXi)或 VMWare Server 这样的东西,你就有了一个完整的操作系统,提供了管理程序的角色。但是,虚拟机仍然具有完整的虚拟硬件阵列。

另一种方法是半虚拟化,Xen 遵循了很长一段时间。在这种形式的虚拟化中,来宾操作系统知道它已被虚拟化并已被修改以在该环境中工作。有时所有这些需要的是特殊的半虚拟化驱动程序。其他时候,需要彻底的内核更改。

LXC 或 Linux Containers 是又一个进步。在这种情况下,它正在运行完全相同的操作系统的多个实例。内核可能相同,但每个 OS 容器运行多个用户空间。每个容器可能有也可能没有不同的文件系统。

容器提供了一种在具有相同用户空间的系统中不可用的方式在进程之间提供强大的安全隔离的方法。类 Unix 操作系统已经使用“chroot jail”有一段时间了,但它不提供进程分离或限制监狱中进程消耗的资源的能力。通过容器化此类进程,可以限制资源使用,可以为它们分配独立的 IP 地址,并且可以从系统的其余部分遏制利用用户空间的安全漏洞。

与其他类型的虚拟化相比,您会在哪里使用 LXC?这取决于,但 LXC应该提供比任何其他虚拟化方法更少的虚拟化惩罚,因为它是同一个内核调解所有用户空间调用,而不是假装是一堆期望与物理硬件对话的操作系统映像的硬件的虚拟机管理程序。因此,如果您有一堆需要相同操作系统版本的处理,并且可以同时重新启动以进行更新,那么 LXC 可以提供一种低成本的方式来安全地运行所有这些并进行资源管理。


小智 6

LXC 是一种在内核隔离系统/进程的方法。该系统被锁定在一个“容器”中,因此它不能与该容器之外的任何东西交互。因此名称为 Linux 容器。

它可能对许多事情有用,其中之一是隔离在机器上运行的服务。如果这些服务之一受到威胁,主机系统本身(以及在它们自己的 LXC 中运行的其他服务)将不受影响。它甚至可以用作一种愚蠢的方式,让每个用户都能访问自己的系统,而不必担心他们彼此交互。

由于需要模拟硬件设备,大多数其他“常见”虚拟化会产生大量资源使用开销。LXC 不需要对硬件设备进行任何类型的仿真,因为每个 LXC 都被授予有限的/无法直接访问硬件的权限。每个系统都在主机上“运行”,但不能影响其容器之外的任何东西。这种类型的虚拟化被称为操作系统级虚拟化(google it)。这实质上意味着运行 Linux 容器的开销很少/不存在。因此,您可以在给定的机器上拥有数百个 LXC,但是使用“通用”虚拟机软件会很快耗尽资源。

我实际上更熟悉Linux-Vserver,但理论非常相似。