Docker与VMware的常见问题

Docker与VMware的常见问题

这是虚拟化巨头的冲突:一个是虚拟机,另一个是容器化技术。实际上,两者都是互补的技术——因为硬件虚拟化和容器化各有其独特的品质,并且可以协同使用以获得组合优势。让我们来看看它们如何相互叠加,以及如何将两者结合使用以实现最大的敏捷性。

Docker与VMware的常见问题-美联科技

容器与虚拟机

简单地说,容器提供操作系统级别的进程隔离,而虚拟机提供硬件抽象层的隔离(即硬件虚拟化)。因此,在 IaaS 用例中,机器虚拟化非常适合,而容器最适合打包/运输便携式和模块化软件。同样,这两种技术可以相互结合使用以获得额外的好处——例如, 可以在 VM 内创建Docker 容器,以使解决方案具有超便携性。

VMware

这家行业领先的虚拟化软件供应商几乎不需要介绍,因为它的产品和解决方案已经为一代虚拟化技术铺平了道路。vSphere 是 VMware 的旗舰虚拟化套件,包含大量工具和服务,例如 ESXi、vCenter Server、vSphere Client、VMFS、SDK 等。该套件可用作各种云计算虚拟化操作系统,为 Windows、*nix 等客户操作系统提供虚拟操作平台。

vSphere 套件的核心是 ESXi:使硬件虚拟化成为可能的主要管理程序技术。管理程序允许多个操作系统使用自己的一组专用资源在单个主机上运行,​​因此每个客户操作系统似乎都有 CPU、内存和其他系统资源专用于自己使用。ESXi 直接在裸机服务器硬件上运行——不需要预先存在的底层操作系统。安装后,它会创建并运行自己的由 3 个接口组成的微内核:

  • 硬件
  • 访客系统
  • 控制台操作系统/服务控制台

虽然是早期的虚拟化先驱,但 VMware 不再是唯一的市场:Microsoft Hyper-V、Citrix XenServer 和 Oracle VirtualBox 也是流行的虚拟机管理程序技术。越来越多的企业也将 Docker 视为潜在的 VMware 颠覆者,但正如我们很快就会看到的那样——尽管席卷了虚拟化领域,但它并不直接与 VMware 竞争。

码头工人

Docker项目的 主要目的是允许开发人员通过使用容器更轻松地创建、部署和运行应用程序。显然——对于 DevOps 和 CI/CD 计划——应用程序的可移植性和一致性是 Docker 很好地满足的关键需求。从容器镜像构建的容器可以将应用程序与所有必需的库、依赖项和资源捆绑在一起,以便于部署。通过使用命名空间和控制组等 Linux 内核特性在主机操作系统之上创建容器,应用程序部署可以从开发到生产的整个过程实现自动化和流线化。

Docker与VMware的常见问题-美联科技

在 0.9 版本中,Docker 用自己用 Go 编写的 libcontainer 库替换了 LXC,从而为不同的供应商提供更广泛的原生支持。现在在 19.x 版本上,Docker 现在提供对 Window 的原生支持,从而简化了 Windows 开发机器上 Docker 主机和容器的管理。同时,Docker Enterprise 业务 被 Kubernetes即服务提供商 Mirantis 收购。

对于开发人员和运营商而言,Docker 提供了以下高级优势,其中包括:

  • 部署速度/敏捷性——Docker 容器满足运行应用程序的最低要求,实现快速、轻量级的部署。
  • 可移植性——因为容器本质上是独立的、自给自足的应用程序包,它们可以跨机器运行而不会出现兼容性问题。
  • 重用——容器可以被版本化、归档、共享,并用于回滚应用程序的先前版本。平台配置本质上可以作为代码进行管理。

Docker 与 VMware 并排

尽管 VMware 和 Docker 都可以归类为虚拟化技术,但每种技术的最佳用例可能完全不同。例如,VMware 模拟虚拟硬件并且必须考虑所有底层系统要求——因此,虚拟机映像比容器大得多。也就是说,还可以使用 VMware 在单个主机上并行运行许多独立的操作系统实例,从而允许组织在内部构建真正的 IaaS 解决方案。

因为 Docker 容器是由 Docker 引擎(与虚拟机管理程序相反)执行的,所以它们不是完全隔离的。然而,代价是占用空间很小:与 VMware 不同,Docker 不会创建一个完整的虚拟操作系统,而是将所有尚未在主机上运行的必需组件与应用程序一起打包在容器中。由于主机内核在 Docker 容器之间共享,因此应用程序只附带运行所需的内容——不多也不少。这使得 Docker 应用程序比虚拟机更易于部署、更轻量级且启动速度更快。

Docker 容器通常比虚拟机更快且资源密集度更低,但完整的 VMware 虚拟化仍然具有其独特的核心优势——即安全性和隔离性。由于虚拟机支持真正的硬件级隔离,因此与 Docker 容器相比,干扰和/或利用的可能性更小。因此,对于应用程序/软件的可移植性,Docker 是您最安全的选择。为了机器可移植性和更大的隔离性,请使用 VMware。无论您选择哪种虚拟化技术,UpGuard 都可以自动验证您的虚拟机、Docker 容器、Web 应用程序等的完整性和安全性。

Docker与VMware的常见问题-美联科技

Docker 与 VMware 常见问题

主要区别是什么?

VMware 模拟机器硬件,而 Docker 模拟运行应用程序的操作系统。Docker 是一种更轻量级的虚拟化技术,因为它不必模拟服务器硬件资源。重点是抽象应用程序所需的环境,而不是物理服务器。VMware,就像实际的机器硬件一样,允许您安装操作系统和其他需要完整服务器的任务。

Docker 只是炒作还是对 VMware 的改进?

Docker 的用例是由应用程序的架构和部署方式的进步驱动的。Web 规模的企业不再依赖单体应用程序,而是发现了微服务架构的优势,包括可扩展性和高可用性。Docker 容器为微服务提供了敏捷性和可靠性。围绕容器构建的生态系统,包括 Kubernetes 和 Apache Mesos 等工具,为 IT 组织带来了实实在在的好处。Docker 的工具,包括其 CLI、Docker Compose 和 Docker Swarm,为云原生应用程序部署提供了出色的支持。

Docker 比 VMware 快吗?

配置和启动 Docker 容器必然比启动 VMware 容器更快。毕竟,Docker 容器是一种更轻量级的资源。与虚拟机的 RAM 和其他要求相比,容器的开销很小。但是,这并不意味着当您运行容器时,您的应用程序一定会比在 VMware 虚拟机上运行的应用程序更快。VMware ESXi、Xen 和 KVM 等虚拟机平台的性能可与裸机相媲美。应用程序的特定环境将决定速度,包括机器规格、RAM 和其他因素。

你可以在虚拟机中运行 Docker 吗?

由于 VMware 和 Docker 处理不同级别的虚拟化,它们不是严格竞争的技术,而是互补的技术。可以串联使用它们,许多组织都这样做。因此,您可以在运行在 VMware ESXi 虚拟机上的操作系统(例如 Ubuntu 或 VMware 的 Photon)中运行 Docker。

Docker与VMware的常见问题-美联科技

将 Docker 和 VMware 结合在一起

在 VMware 虚拟机上运行 Docker 不仅是可能的,而且许多 IT 团队依靠这种设置来部署他们的应用程序。虽然桌面产品 VMware Workstation 可供开发人员在开发期间使用,但它并不是适用于生产的设置。相反,您将希望使用 VMware vSphere 和 ESXi 等 VMware 产品,它们为您配备了用于生产工作负载的高性能虚拟机。VMware 的 ESXi 是一种裸机类型 1 虚拟机管理程序,专为安全性和效率而设计。它直接安装到您的服务器上,并直接控制物理服务器的资源。ESXi 占用空间小,只有 150 MB,支持配置高达 6TB RAM、128 个 CPU 和 120 个设备的虚拟机。

对于在 VMware 虚拟机之上用于运行容器的实际操作系统,您有许多选项。一种强大的方法是使用 VMware 的 Photon,这是一种以容器为中心的轻量级操作系统,并且针对此目的进行了性能优化。另一种选择是运行您可能已经在使用的流行发行版,例如 Ubuntu、CentOS 或 Debian,它们都可以与 VMware 产品无缝协作。除了这些设置之外,容器化应用程序还可以直接与在 VMware 虚拟机或其他类型的虚拟机上运行的服务进行通信。这意味着您可以在数据中心中组合 Docker 主机和 VMware 虚拟服务器。您的 Docker 应用程序也可以部署在云中的虚拟机上,例如 AWS、Azure 或 Google Cloud。

在 VMware 虚拟机上运行 Docker 时遇到的一些常见问题包括:

  • VMotion 虚拟主机迁移会中断对虚拟机的物理资源访问,从而导致虚拟机中运行的 Docker 化应用程序出现问题。
  • 高 CPU 就绪(虚拟机就绪但无法在物理 CPU 上运行的时间指标)可能会导致 Docker 容器中的应用程序出现性能问题。
  • 虽然 VMware 允许对虚拟机进行快照,但在快照期间,机器上可用的 I/O 资源会降低,从而导致 Docker 容器出现问题或中断。

在同时使用 Docker 和 VMware 时,您应该注意这些问题,并采取措施缓解这些问题。

虚拟化的未来:Docker 会取代 VMware 吗?

虚拟化的未来可能包括更多地使用容器,而 Docker 可能会从中受益。Docker 的上升趋势背后有强大的原因,以及相关技术的使用。一方面,容器使组织能够更加敏捷,因为它们部署得如此之快。开发人员可以更轻松、更快速地启动容器来测试他们的代码,同时部署也更快。

Docker与VMware的常见问题-美联科技

使用 Docker,您可以在裸机、虚拟机、AWS、Azure 或其他生产环境上进行部署。容器不仅在编排中引入了更高的效率,而且很大一部分容器技术也是开源的。这在整个社区范围内促进了更大的创新,从而为所有人提供了更好的解决方案,同时降低了成本。无服务器托管等其他趋势也促进了轻量级应用程序部署的一般论点,容器在很大程度上促进了这一点。未来,越来越多的组织可能会遵循“担心您的应用程序,而不是环境”的口号。

这些趋势都表明,Docker 和 Kubernetes 等技术将在未来发挥更大的作用。也就是说,虚拟机可能会继续流行,至少在某些用例中是这样。与虚拟机相比,容器实现的隔离更少,因此往往被视为不太安全。对于需要更高安全性的用例,虚拟机可能仍然是一种卓越的技术。此外,容器的持久存储更难。这些是容器难以解决的问题,但将来可能会大大改善。如果是这样,对虚拟机的需求可能会进一步减少,但这还有待观察。

就 VMware 而言,它可以从将现有应用程序迁移到云的企业迁移到云中受益。在这种情况下,其中许多组织尚未准备好全面采用容器,但可以从 VMware Cloud 或 VMware Hybrid Cloud Platform 等 VMware 的云产品中受益。

如何在 Docker 和 VMware 之间进行选择

正如我们所见,Docker 和 VMware 的互补性意味着,与其问“我们应该使用 Docker 还是 VMware”,不如说许多这样的组织应该问“我们如何一起使用这两者”。不过,如果您的情况需要其中一项而不是两项,这些指南可以帮助您做出选择。首先,如果您要将单体应用程序从本地托管迁移并将应用程序移植到容器将需要不可接受的开发投资,那么 VMware 虚拟机显然是合适的选择。此外,如果您希望您的应用程序拥有自己的用户空间和持久存储并在操作系统级别进行隔离,那么使用 Intel VT 或 AMD-V 等技术的 VMware 也更适合您的需求。

另一方面,对于专注于应用程序、特定操作系统及其功能与您的应用程序无关的情况,Docker 容器是理想的选择。如果你正在实现一个分布式架构,每个应用程序都作为微服务运行,那么 Docker 是部署这类应用程序的理想选择。每个应用程序都在自己的容器中运行,Kubernetes 等平台可帮助您管理容器集群,这些容器集群可能托管在云中的众多服务器上。无论您最终使用哪种工具,Docker 和 VMware 都可以提高服务器利用率和效率,并降低总体部署成本。

客户经理