什么是 Linux 容器和 Linux 管理程序?

shi*_*ish 10 linux virtual-machine virtualization lxc containers

我查看了 stackexchange 站点,但找不到任何内容。我查看了 Linux 容器https://en.wikipedia.org/wiki/LXC以及管理程序https://en.wikipedia.org/wiki/Hypervisor上的维基百科条目,但对两者的解释都超出了没有工作过也不会明白。我还看到了http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun但这也没有解释。

我玩过虚拟机之类的虚拟机。我对虚拟机的有限理解的一个起始想法可能是在沙盒环境中测试软件(当您无法购买/负担得起机器并且仍然对您正在开发的软件有一些想法时拥有一个 Solaris 盒子因为该目标硬件正在工作。)虽然它使用受到限制。这可能也是它在云计算领域取得飞跃的方式之一。问题很广泛,所以这就是我提炼它的方式-

有人能解释一下 hypervisor 和 *nix 容器是什么(如果可能的话,用类比)?
*nix 管理程序与虚拟机相同还是有区别?

gar*_*Red 10

一个虚拟机(VM)是许多虚拟化技术相当的总称。

虚拟化技术有很多变化,但主要的有:

  • 硬件级虚拟化
  • 操作系统级虚拟化

qemu-kvm并且VMWare是第一个的例子。他们采用管理程序来管理运行完整操作系统的虚拟环境。例如,在一个qemu-kvm系统上,您可以让一个 VM 运行 FreeBSD,另一个运行 Windows,另一个运行 Linux。

由这些技术创建的虚拟机对于来宾来说就像是独立的个人计算机。这些具有虚拟 CPU、RAM、NIC、图形等,客人认为它们是正品。因此,许多不同的操作系统可以安装在 VM 上,它们“开箱即用”,无需修改。

虽然这非常方便,因为许多操作系统都可以轻松安装,但它有一个缺点,即虚拟机管理程序必须模拟所有硬件,这可能会减慢速度。另一种选择是半虚拟化硬件,其中为来宾开发了新的虚拟设备和驱动程序,旨在提高虚拟环境中的性能。 为此qemu-kvm提供virtio一系列设备和驱动程序。这样做的一个缺点是必须支持来宾操作系统;但如果支持,性能优势是巨大的。


lxc是操作系统级虚拟化或容器的一个例子。在这个系统下,只安装了一个内核——主机内核。每个容器只是用户空间进程的隔离。例如,Web 服务器(例如apache)安装在容器中。就该网络服务器而言,唯一安装的服务器是它本身。另一个容器可能正在运行 FTP 服务器。该 FTP 服务器不知道网络服务器安装 - 只有它自己的。另一个容器可以包含 Linux 发行版的完整用户空间安装(只要该发行版能够与主机系统的内核一起运行)。

但是,在使用容器时没有单独的操作系统安装——只有用户空间服务的独立实例。因此,您无法在容器中安装不同的平台——Linux 上没有 Windows。

容器通常是通过使用chroot. 这会/为要使用的进程创建一个单独的私有根 ( )。通过创建许多单独的私有根,进程(Web 服务器或 Linux 发行版等)在它们自己的隔离文件系统中运行。更高级的技术,例如cgroups可以隔离网络和 RAM 等其他资源。


两者都有利有弊,而且关于哪一个最好的长期争论也很多。

  • 容器更轻,因为没有为每个容器安装完整的操作系统;管理程序就是这种情况。因此,它们可以在较低规格的硬件上运行。但是,它们只能运行 Linux 来宾(在 Linux 主机上)。此外,由于它们共享内核,因此受感染的容器可能会影响另一个容器。
  • 虚拟机管理程序更安全并且可以运行不同的操作系统,因为每个 VM 中都安装了完整的操作系统,并且来宾不知道其他 VM。但是这样会占用主机上更多的资源,必须是比较强大的。