什么是虚拟技术?


例子:传统的虚拟机技术(VMware)将一组硬件虚拟化,在其上安装并运行一个完整的操作系统,然后在该系统上运行所需的应用进程;虚拟机就像一台主机。

虚拟化提供了在一个较大的服务器的物理环境框架内存在多个较小的虚拟服务器。在母机上运行的虚拟化软件为每个虚拟服务器分配资源。虚拟服务器也收到他们自己的:操作系统(OS)、驱动程序、数据库、图书馆、应用程序。这些虚拟服务器之间是相互隔离的。每个小型服务器都存在于一个由其他服务器组成的虚拟化平台中。它们也参与到一个与其他虚拟机共享的资源池中。

使所有类型的虚拟化成为可能的软件被称为管理程序。管理程序可以是硬件,软件,或基于固件。

管理程序作为一个虚拟层,将物理服务器和其较小的虚拟机(VM)分开,无论其配置如何。管理程序的分离允许多个客户操作系统在整个物理服务器中并肩运行。

管理程序确保虚拟机访问中央服务器资源的规定部分。它还负责确保虚拟机保持分离,并按照配置分给每个虚拟机。虚拟机还可以在自己的空间内更新和修改应用程序,而不影响另一个虚拟机上的应用程序。

每个虚拟机本质上是主机服务器在其自身操作系统上的一个虚拟副本,导致一些虚拟机资源繁重,速度缓慢。虽然它们只是整个服务器的一个较小的分区,但它们仍然可以消耗大量的内存和处理能力。

什么是容器?

容器是一个应用层面的抽象,用于将代码和依赖资源打包在一起。

容器的目的是将一个应用程序及其依赖资源封装在其环境中。这种封装允许它们在隔离状态下运行,同时使用与服务器内其他容器相同的系统资源和操作系统。由于没有在运行独立的操作系统任务上浪费资源,容器化允许更快速、更有效地部署应用程序。

 

容器化与虚拟化的另一个区别是容器的大小。每个容器镜像的大小可能只有几兆字节,这使得它更容易分享、迁移和移动。

容器引擎可以轻松地管理大量的容器,以根据需要创建、添加和删除容器。容器的维护也被简化,因为我们只需要在一个操作系统上更新、打补丁和修复错误。

虚拟化VS容器化

速度:说到速度,容器是明显的赢家。它们被设计用来大大减少软件应用程序的加载和运行时间。由于操作系统已经启动和运行,应用程序的启动将没有明显的延迟。这种没有延迟的情况对于软件开发团队来说是一个很好的解决方案,因为它将在应用测试周期中节省时间。相反,虚拟机需要充足的时间来完成整个操作系统的启动过程,导致虚拟机的启动时间要比容器长得多。

资源:由于虚拟服务器运行独立的操作系统,每一个系统调用都要经过虚拟化层,所以它们往往是资源密集型的。这对于内存来说尤其如此,因为即使不处理用户请求,虚拟机也会消耗内存。由于CPU虚拟化的成本相对较低,所以虚拟机的处理器成本往往较低。当涉及到容器时,它们会快速启动,与虚拟机相比,它们的内存消耗保持在较低水平。容器也减少了开销,因为它们可以不使用管理程序而运作。

安全性和隔离性:虚拟化在安全和隔离方面获胜。就其本质而言,虚拟机保持独立和相互隔离。一个被感染的虚拟机不会影响另一个,而且每个虚拟机都可以实现自己的安全协议。由于容器只在进程层面隔离数据和应用程序,它们提供的安全环境较差,并依赖于主机系统的安全协议。

可移植性和应用程序共享:由于容器镜像比虚拟机小得多,它们更容易转移,并节省主机文件系统的空间。另一方面,虚拟机需要复制整个操作系统、主机内核、系统库、配置文件和任何必要的文件目录。这大大增加了映像的大小,使虚拟机在共享或转移时面临挑战。容器图像可以通过几种方式共享,互联网上有各种应用共享中心。虚拟机图像不能利用这些集中的中心。转移它们需要把它们上传到另一台服务器上。

操作系统要求:当一个企业运行多个需要专用操作系统的应用程序时,虚拟机是最好的。但是,如果大多数应用程序有相同的操作系统要求,容器化将是一个更实用的解决方案。

应用程序的生命周期:容器对于短期的应用需求很有效。它们可以快速设置,可移植,而且启动时间比虚拟机快得多。它们的局限性来自于缺乏一个专门的操作系统、处理和存储资源。当你的主要目标是优化你的服务器资源的效率时,使用容器。但是,如果你计划运行需要长时间运行的应用程序,虚拟机是一个更好的选择。虚拟机更适合处理延长的运行时间,因为它们在虚拟化环境中运行,更加强大和通用。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐