您是刚刚开始使用可视化工具吗? 或者通过关于容器和虚拟机的技术对话来破解你的方式。
虚拟化需要将 RAM、CPU、网络和磁盘等单一资源“虚拟化”并视为多种资源的过程。 关键区别在于容器只能虚拟化构建在操作系统级别之上的软件层。 相反,虚拟机可以将整个机器虚拟化到硬件层。
虽然存在明显区别,但容器和虚拟机之间存在一系列相似之处,包括它们如何提高 IT 效率、利用应用程序的可移植性、增强 DevOps 以及软件开发生命周期 (SDLC)。 稍后会详细介绍。
这篇文章对容器和虚拟机进行了细分,深入探讨了两者的优势,并以关于根据您的需要选择正确工具的说明作为结尾。 它还假设您具备容器和虚拟机的必备知识。 如果您还没有,它仍然是一个很好的起点。
虚拟化的历史
在容器普及之前,虚拟机是在物理基础设施内隔离环境的唯一解决方案。 但直到 2013 年,Docker 才发布了他们的第一个容器化软件。
从那时起,您可能已经注意到人们对容器的广泛兴趣以及它们如何塑造云计算格局。
许多开发人员对容器产生了更多兴趣,尤其是对容器提供的敏捷开发的好处。 但是,您应该注意,容器和虚拟机是建立在优化现有物理基础设施资源的基础上的。
虚拟化的工作原理
虚拟化涉及使用软件在计算机硬件之上创建抽象层,允许硬件元素(特别是来自一台计算机的硬件元素)分为多台计算机。 此类软件称为管理程序。
管理程序允许各种操作系统并发运行,共享公共物理计算资源。 当用于物理计算机或数据中心的服务器时,它将使物理计算机能够将计算机操作系统(OS)和应用程序与硬件分开。 之后,它可以将自己分成多个“虚拟机”。
什么是容器?
资料来源:docker.com
容器是一种用于处理虚拟化的轻量级敏捷方法。 由于它们不需要虚拟机管理程序,因此它们使您能够更快地提供资源并快速获得新应用程序。
您还可以将容器视为包含执行托管应用程序软件应用程序所需的依赖项的软件包。
依赖项包括系统库、外部(第三方)代码包以及所有其他操作系统级应用程序的包含。 容器中包含的所有依赖项都存在于高于操作系统的堆栈级别。
优点👍
缺点👎
受欢迎的容器供应商
以下是一些知名的容器提供商:
什么是虚拟机?
资料来源:docker.com
另一方面,虚拟机 (VM) 是大型(重型)软件包,可提供对中央处理器 (CPU)、磁盘和网络设备等低级硬件设备的完整模拟。
VM 允许您在不同的操作系统上运行多台机器,但仍然在一台计算机上。 如前所述,管理程序是 VM 与物理计算机交互的方式。 管理程序将 VM 彼此分开,并在它们之间分配内存和处理器等资源。
优点👍
缺点👎
流行的虚拟机供应商
以下是一些流行的虚拟机供应商:
容器与虚拟机
虽然虚拟机已经存在了很长时间,但出于类似的目的,它们正被容器所取代。 您已经了解了这两种技术堆栈的优缺点。 以下是主要区别。
FeatureContainers Virtual MachinesLarge 和 less portable 基于每个 VM 都有自己的操作系统。 虚拟机占用大量空间,以千兆字节为单位。
虚拟机不可移植。没有自己的操作系统。有自己的操作系统,因此执行额外的任务,包括: 运行与主机操作系统不兼容的程序,不同操作系统上的多个程序,以及执行无法共享操作系统资源和功能的应用程序。尺寸和便携性由于共享操作系统而导致体积小和便携。 容器占用以兆字节为单位的空间。
容器可以在不同的计算机之间移动。由于其已经运行的操作系统,容器的执行速度比虚拟机快。 运行需要几秒钟。启动时速度 VM 很慢,因为它们必须先启动自己的操作系统。 启动需要几分钟。VM 的价格相对较高——对资源和复杂层的需求高,成本高。访问资源容器可以访问主机中的所有资源。虚拟机使用分配给它们的特定资源由 hypervisor.Security 不太安全。 当主机操作系统受到威胁时,在共享主机操作系统上运行的容器很容易受到攻击。部署复杂; VM 的复杂程度表明它们需要更多的开发时间。 部署也不例外。DeploymentEasy deployment; 这是因为其“自包含”的性质,并且在部署、移动或升级方面略有轻松。VM 的价格相对较高。 对资源和复杂性层的高需求,随之而来的是高成本。成本容器的价格相对较低,因为容器的要求比 VM 少。VM 的价格相对较高——对资源和复杂性的高需求层级,随之而来的是高昂的成本。
如何同时使用容器和虚拟机
如果你一直想知道是否可以一起使用容器和虚拟机,答案是肯定的。 虽然,实际案例是有限的。 您可以创建一个 VM 来模拟特定的硬件配置并安装操作系统。
一旦您的 VM 启动操作系统并完全正常运行,您现在就配备了一个模拟计算系统,该系统具有您可以在其上安装容器的特定硬件。
一个很好的例子来说明这种配置是用芯片部署系统进行试验。 BeagleBone 开发板和 Raspberry Pi 等片上计算设备的一些流行方法可以模拟为虚拟机,以便在实际硬件上进行测试之前对操作(运行)容器进行试验。
使用容器和虚拟机联合的另一个优势是提高安全性。 例如,您可以在虚拟机中部署容器。 考虑一个示例,其中在一台计算机上部署了 10 个容器,以演示这有何帮助。
如果计算机受到威胁,您将面临影响这 10 个容器的风险。 该解决方案是通过将十个容器分布在十个虚拟机上来实现的。 如果一个虚拟机受到威胁,系统应用程序的其他部分通常仍然可以运行。
最后的话
如果您的项目有精确的硬件规格,或者在一种硬件上进行开发但仍以另一种硬件为目标,例如 Windows 与 MacOS,那么最好使用虚拟机。 在要求“仅限软件”的其他情况下,最好的选择是使用容器。
在大多数情况下,您的需求将通过您的任何一个选择得到满足。 要选择最好的,请了解您的资源需求和相关的权衡。 因此,正确的工具将取决于您的项目。
如果您需要快速、高效的部署,容器是您的最佳选择。 如果您的组织需要在硬件上虚拟化一个完整的操作系统,那么 VM 是最好的选择。 如果您希望最大限度地提高安全性,那么将两者结合起来是最好的; 但是,它有相关的成本。
最后,容器和虚拟机都是有效的解决方案。 但是,您的规格应该是决定性的指导因素。 如果您仍然需要更多指导和深刻理解,我建议您前往 Docker vs. virtual machine。