《系统设计》课程学习笔记—虚拟机(VM)和容器

174 阅读3分钟

在讨论虚拟化与容器化之前,让我们先了解什么是虚拟机(VM)和容器。

虚拟机(VM)

虚拟机(VM)是一种虚拟环境,它作为一个虚拟计算机系统,在物理硬件系统上创建了自己的CPU、内存、网络接口和存储。一个名为 hypervisor 的软件将机器的资源与硬件分离,并适当地配置它们,以便VM可以使用它们。

虚拟机与系统的其他部分隔离,多个虚拟机可以存在于单个硬件上,如服务器。它们可以根据需求在主机服务器之间移动,或者更有效地使用资源。

什么是 Hypervisor?

Hypervisor有时称为虚拟机监视器(Virtual Machine Monitor,VMM),将操作系统和资源与虚拟机隔离,并支持创建和管理这些虚拟机。Hypervisor 将CPU、内存和存储等资源视为一个资源池,可以在现有客户机或新虚拟机之间轻松重新分配。

为什么要使用虚拟机?

服务器整合是使用虚拟机的首要原因。大多数操作系统和应用程序部署只使用少量可用的物理资源。通过虚拟化我们的服务器,我们可以在每个物理服务器上放置许多虚拟服务器,以提高硬件利用率。这使我们不需要购买额外的物理资源。

VM提供了一个与系统其余部分隔离的环境,因此VM内运行的任何内容都不会干扰主机硬件上运行的任何其他内容。因为虚拟机是隔离的,所以它们是测试新应用程序或设置生产环境的好选择。我们还可以运行一个单一用途的虚拟机来支持特定的用例。

容器

容器是软件中将代码及其所有依赖项(如运行时和库的特定版本)打包,以便应用程序从一个计算环境快速可靠地运行到另一个的标准单元。容器提供了一种逻辑打包机制,应用程序可以从实际运行的环境中抽象出来。这种解耦使基于容器的应用程序能够轻松一致地部署,而不管目标环境如何。

为什么我们需要容器?

让我们讨论一下使用容器的一些优点:

责任分离

容器化提供了明确的责任分离,因为开发人员专注于应用程序逻辑和依赖关系,而运营团队可以专注于部署和管理。

工作负载可移植性

容器几乎可以在任何地方运行,大大简化了开发和部署。

应用隔离

容器在操作系统级别虚拟化CPU、内存、存储和网络资源,为开发人员提供与其他应用程序逻辑隔离的操作系统视图。

敏捷开发

容器允许开发人员通过避免对依赖关系和环境的担忧而更快地开发。

高效运作

容器是轻量级的,允许我们只使用我们需要的计算资源。

虚拟化 vs 容器化

virtualization-vs-containerization.webp

在传统的虚拟化中,hypervisor 虚拟化物理硬件。结果是,每个虚拟机都包含一个客户操作系统、操作系统运行所需硬件的虚拟副本,以及一个应用程序及其相关的库和依赖项。

容器不是虚拟化底层硬件,而是虚拟化操作系统,因此每个容器只包含应用程序及其依赖项,使它们比虚拟机轻量得多。容器还共享操作系统内核,并使用虚拟机所需内存的一小部分。