容器,虚拟机,虚拟机上的容器有什么区别
容器和虚拟机有什么区别?何时应使用它们?随着容器的普及,这已经成为一个非常普遍的问题。本文的目的是强调两种技术之间的主要区别,以使我们了解何时应将一种技术用于另一种技术。
虚拟机
顾名思义,虚拟机就是虚拟机。它的操作与物理机完全相同。我们添加了所有相同的组件,例如CPU,RAM,存储控制器,存储,网络接口等。
虚拟机还安装了完整的操作系统。实际上,我们可以使用可通过物理服务器完成的VM来执行任何操作。
引入虚拟机作为解决方案,可以更有效地使用现有硬件。无需购买和配置整个物理服务器来运行一项服务,我们可以通过购买稍大的服务器并托管许多服务来节省成本。
尽管其他技术(例如容器)已通过Docker等工具进行了普及,但虚拟机仍然占有一席之地。并非所有应用程序或者服务都应在容器中运行。大型复杂的整体应用程序则不应。我们不希望在容器中运行WebSphere,因为它将需要在单个容器中变得困难或者不可能的管理任务。但是,WebSphere非常适合虚拟机。
容器
容器是进程和文件的隔离。与虚拟机相比,它的重量要轻得多。
没有操作系统或者硬件虚拟化。仅此一项就可以大大减少存储量。它仅具有运行某些进程所需的二进制文件,并提供一个端点以与其进行交互。
借助隔离文件和进程的能力,我们可以在同一主机上运行应用程序或者服务的许多不同版本。在虚拟机或者物理服务器上可能很难甚至无法实现的事情。
容器也高度便携。将容器从一台主机移到另一台或者移到一百台是很简单的。这本身就是最有价值的功能。
虚拟机上的容器
在Docker逐渐流行的过程中,人们普遍认为容器可以代替虚拟机。这是一个奇怪的论据,因为两种技术实际上并不相互竞争。相反,当它们一起使用时,它们可以为物理硬件提供额外的效率。
如果物理Docker经历了灾难性的硬件故障,它将脱机-故事的结尾。这可能会损害服务可用性。现在,几乎所有虚拟环境的架构都可以在原始主机意外脱机时将虚拟机故障转移到新主机上。
因此,通过虚拟化容器主机,我们可以提供更好的服务正常运行时间。然后,我们可以通过在主机上配置几个容器来进一步优化我们的系统资源,这些容器仅需要足够的存储和系统资源来为其提供的服务提供动力。
引入了诸如Kubernettes之类的编排服务来管理我们的容器,并且我们进一步提高了应用程序的可用性。我们可以轻松扩展并提供更好的容错能力,这意味着我们的客户很少受到硬件故障的影响。