欢迎来到云服务器租用和托管数据中心

虚拟主机

容器与虚拟机有什么区别?

容器与虚拟机——这两种虚拟化解决方案有什么区别?一方面,您拥有容器化,它可以虚拟化操作系统 (OS),并允许多个工作负载在其上运行。另一方面,您拥有基于虚拟机的虚拟化,可以虚拟化硬件并允许多个操作系统实例在其上运行。这篇文章首先定义虚拟机和容器,然后讨论它们最显着的区别,然后讨论它们如何在一个环境中协同工作,包括一个使用Parallels ® Remote Application Server (RAS)管理的环境。

容器与虚拟机有什么区别?

什么是虚拟机?

想象虚拟机是什么的最简单方法可能是想象计算机运行在纯软件的计算机之上。相比之下,运行这些“基于软件的计算机”的计算机只是一台普通计算机,即由硬件和软件组成的计算机。例如,它具有物理 CPU、内存和存储(本文将其称为资源),而那些“基于软件的计算机”则没有。

在虚拟化术语中,那些“基于软件的计算机”被称为虚拟机或 VM。VM 具有从底层物理资源分配给它们的虚拟化资源。创建 VM 时,会为该 VM 保留一部分物理资源。此外,这些虚拟机中的每一个都有一个操作系统和一个或多个应用程序。

使一个或多个 VM 在物理计算机上运行并与 VM 共享物理资源的软件称为管理程序。一些管理程序运行在主机操作系统之上,而其他管理程序运行在裸机(无主机操作系统)上,即它们直接安装在物理服务器上。

作为软件,每个虚拟机都封装在一个文件中。作为文件,它们比物理文件更便携。您可以复制或克隆它们。您可以通过网络传输它们。您可以在不再需要时丢弃或删除它们。您甚至可以创建一个“黄金映像”作为模板,然后以编程方式(或通过管理员控制台)从该模板创建数百甚至数千个 VM。

由于这些特性,虚拟机极大地简化了 IT 管理员的生活。虚拟机使 IT 管理员和员工能够将服务器和桌面的配置和部署时间从几小时缩短到几分钟,或者在涉及大量(100 或 1,000 个端点)时,从几周或几个月缩短到几天。它们可用于创建测试环境、在主机操作系统上运行遗留应用程序或非本地应用程序、检查受恶意软件感染的文件等。

容器与虚拟机有什么区别?

什么是容器?

容器有点类似。与虚拟机一样,它们采用某种形式的虚拟化。但容器不是虚拟化底层硬件,而是虚拟化主机操作系统,即容器运行的操作系统。容器共享主机操作系统内核,但主机操作系统的其他元素(例如,在用户模式下运行的系统文件或库)根据特定容器需要的文件/库并入每个容器内。

通常,容器包括应用程序、该应用程序所需的操作系统文件以及其他依赖项和相关配置文件。因为大部分操作系统(内核)不包含在容器中,所以容器通常比 VM 小得多。如果虚拟机的大小可以达到千兆字节,那么容器可能只有几十兆字节。

由于占用空间小,容器的启动和部署速度比虚拟机快得多——容器的启动时间不到一秒,而虚拟机的启动时间只需几分钟。而且因为容器共享一个主机操作系统,所以在主机操作系统上进行的任何修补/更新都会被它上面的容器继承(这仅适用于内核中运行的文件。每个单独容器中的其他文件必须单独更新)。

由于它们具有极高的可移植性,并且它们已经包含容器化应用程序独立运行所需的所有代码和信息,因此容器在自动化 DevOps 管道中非常有用。实施持续集成/部署 (CI/CD) 的 DevOps 团队经常使用容器来简化和加速这些流程。这种可移植性也使容器适用于多云环境。

容器图像可以上传到存储库以与希望使用它们的其他人共享。这些镜像可以是数据库、操作系统、内容管理系统 (CMS)、Web 服务器,以及几乎所有的容器化应用程序。开发人员、IT 人员和其他人可以使用这些映像来构建他们自己的应用程序。

容器与虚拟机有什么区别?

容器与虚拟机:有什么区别?

一般来说,容器更便于移植,而虚拟机具有更严格的隔离。但这并不是两者之间唯一的区别。以下是关于这两个特征以及其他一些差异的更多信息:

  • 可移植性。容器和基于 VM 的应用程序都具备运行所需的一切。因此,您可以说它们都是便携式的。但是,由于容器不包含操作系统内核,而只是利用底层主机操作系统提供的资源,因此它们比虚拟机更小,因此更便携。
  • 隔离。虚拟机与其周围环境更加隔离,无论是主机操作系统还是相邻的虚拟机。这种隔离级别是在同一物理服务器上托管不同组织的虚拟服务器安全的原因之一。虽然容器也具有高度的隔离性,但它们仍然默认访问主机操作系统,并且不像 VM 那样隔离。
  • 部署。您需要一个虚拟机管理程序,例如 Microsoft Hyper-V、VMware ESXi 或 Citrix Hypervisor 来部署 VM。另一方面,要部署容器,您需要 Docker 或类似的解决方案(尽管目前使用最广泛的是 Docker)。您需要使用脚本或 System Center Virtual Machine Manager 等工具进行大规模 VM 部署。对于容器,大规模部署、自动化和编排的实际解决方案是 Kubernetes。
  • 持久存储。虚拟机和容器都可以是无状态的。在这种情况下,运行时创建的所有文件仅在 VM 或容器的生命周期内保留。但是,即使在 VM 或容器已终止/销毁后,您也可能希望保留特定文件。对于 VM,您可以通过创建虚拟硬盘 (VHD) 来获得持久存储。对于容器,您可以使用卷或绑定挂载。

容器与虚拟机有什么区别?

容器与虚拟机:它们可以一起工作吗?

虽然单独使用,但容器和虚拟机在很大程度上可以共存。在某些情况下,如果他们这样做会更好。以下是一些组合容器和虚拟机有意义的用例。

提高容器可移植性

到目前为止,这篇文章对容器的超便携性赞不绝口。尽管有这种看法,但容器在该部门确实有一些限制。如果您还记得,容器使用其主机的操作系统内核。因此,您不能在 Linux 主机上运行基于 Windows 的容器,反之亦然。

这也意味着如果你有一堆容器在 Linux 主机上运行,​​你就不能在 Windows 主机上传输和运行这些容器。您只能在另一台 Linux 主机上运行它们。容器可移植性如此之多。如果您利用虚拟机,这应该不是问题。

在上面的场景中,你可以在你的 Windows 主机上安装一个虚拟机管理程序,在它上面设置一个 Linux VM,然后——瞧——你已经有了一个可以运行 Linux 容器的环境。

利用 VM 隔离

在同一主机上运行的所有容器共享该主机的内核,这是一个安全风险。主机操作系统中的错误理论上可以允许恶意或受恶意软件感染的容器到达同一主机上运行的其他容器。此外,如果内核存在漏洞,它可能会影响在其上运行的所有容器。

容器与虚拟机有什么区别?

由于虚拟机具有更强大的隔离性,因此在 VM 上运行的容器可以利用该安全功能。例如,您可以将需要更强安全性的容器组合在一起,并在单独的 VM 上运行它们(可能使用强化的操作系统)。相比之下,其他安全要求较低的容器在另一个 VM 上运行。

让基于容器的应用程序与现有的基于虚拟机的应用程序通信

如果您已经在 VM 上运行了应用程序,则可以让运行在容器上的应用程序与它们通信。例如,您可以让容器化移动应用程序连接到在 VM 上运行的数据库,或者让容器化客户端应用程序连接到在 VM 上运行的服务器应用程序。

Copyright © 2003-2020 香港服务器和服务器租用 梦飞数据中心 版权所有