Docker与虚拟机对比
关于Docker的一个常见问题是它与VM(虚拟机)的区别。
在云基础架构方面,虚拟机已成为许多优势的首选标准。但是,如果您拥有更轻量,经济且可扩展的虚拟机的替代方案,那该怎么办呢?这正是Docker的意思。
Docker是一种基于容器的技术,可以让您开发分布式应用程序。在这篇博文中,我将解释虚拟机和Docker容器之间的差异。
什么是虚拟机?
虚拟机是一个与计算机完全相同的系统。
简单来说,它可以运行硬件上的许多单独计算机上的内容,即一台计算机。每个虚拟机都需要其底层操作系统,然后硬件被虚拟化。
什么是Docker?
Docker是一个使用容器来轻松创建,部署和运行应用程序的工具。它将应用程序及其依赖项绑定在容器中。
Docker与VM
现在我将告诉你docker容器和虚拟机之间的重大区别。嗯,重要的区别是他们的操作系统支持,安全性,可移植性和性能。
让我们逐一讨论这些术语中的每一个。
操作系统支持
传统与新一代
虚拟机和Docker容器的操作系统支持是非常不同的。从上图中,您可以看到每个虚拟机的主客户操作系统都位于主机操作系统之上,这使虚拟机变得繁重。另一方面,Docker容器共享主机操作系统,这就是它们轻量级的原因。
在容器之间共享主机操作系统使它们非常轻,并帮助它们在几秒钟内启动。因此,与虚拟机相比,管理容器系统的开销非常低。
docker容器适用于您希望在单个操作系统内核上运行多个应用程序的情况。但是,如果您的应用程序或服务器需要在不同的操作系统风格上运行,则需要虚拟机。
安全
虚拟机不共享操作系统,并且主机内核中存在强大的隔离。因此,与Containers相比,它们更安全。容器具有很多安全风险,并且容器具有共享主机内核的漏洞。
此外,由于docker资源是共享的而非命名空间,因此攻击者可以利用群集中的所有容器,即使他/她甚至可以访问一个容器。在虚拟机中,您无法直接访问资源,并且虚拟机管理程序可以限制VM中资源的使用。
可移植性
Docker容器易于携带,因为它们没有单独的操作系统。容器可以移植到不同的操作系统,它可以立即启动。另一方面,虚拟机具有单独的OS,因此与容器相比,移植虚拟机很困难,并且由于其大小,还需要花费大量时间来移植虚拟机。
对于必须在不同平台上开发和测试应用程序的开发目的,Docker容器是理想的选择。
性能
比较虚拟机和Docker容器是不公平的,因为它们都用于不同的目的。但Docker的轻量级架构其资源密集度较低的特性使其成为比虚拟机更好的选择。因此,与虚拟机相比,其容器可以非常快地启动,并且资源使用根据其中的负载或流量而变化。
与虚拟机的情况不同,不需要永久地将资源分配给容器。与虚拟机相比,扩展和复制容器也是一项简单的任务,因为不需要在其中安装操作系统。
结论
这是一个结束虚拟机和Docker容器差异的表。
虚拟机 Docker容器
硬件级进程隔离 OS级进程隔离
每个VM都有一个单独的OS 每个容器都可以共享OS
几分钟内的靴子 几秒钟之内的靴子
虚拟机数量很少 容器很轻(KB / MB)
现成的VM很难找到 预制的码头工人集装箱很容易买到
虚拟机可以轻松迁移到新主机 容器被破坏并重新创建而不是移动
创建VM需要相对较长的时间 可以在几秒钟内创建容器
更多的资源使用 资源使用量减少