知道为什么应该使用容器。但是您知道部署容器得用哪种基础设施吗? 作为托管Docker和其他容器环境的平台,裸机服务器是否比虚拟机更好?
答案当然取决于很多因素,本文将通过列举裸机服务器和虚拟机上运行容器的优缺点来讨论。我将专注于Docker,但这里分享的经验通常适用于任何类型的容器平台。
裸机VS虚拟机
权衡裸机服务器和虚拟化主机环境各自的优缺点不是一个新课题,CTO们在21世纪初就开始思考了,当时虚拟化刚开始在数据中心推广,Docker则还没出现。
简而言之,裸机服务器的主要优点包括:
更高的性能,因为没有系统资源浪费在硬件模拟上;充分利用所有机器资源,高需求期间无闲置;更简单的管理,因为主机、网络和磁盘等硬件基础架构更少。
虚拟机则具有以下优点:
通过在服务器之间传输虚拟机映像,轻松实现在主机间移动应用程序;不同虚拟机中运行的应用程序实现隔离,不仅有助于安全,也能降低管理复杂度。通过在同一类型虚拟机上部署所有应用程序,即使底层服务器是异构的,也能实现软件环境的跨平台一致性。
但是虚拟机也有一些缺点,包括:
服务器资源可能未完全使用。例如,如果您在服务器主机上分配存储空间以创建虚拟机磁盘映像,即使磁盘连接的虚拟机不使用全部空间,该存储空间也不可用于其他用途。虚拟机无法直接访问物理硬件。如果您希望虚拟机能够将计算操作转移到主机的GPU上,您很难或无法实现,因为虚拟机是从底层主机环境中抽象出来的。物理服务器直接访问硬件,虚拟服务器访问软件模拟的硬件。
现代虚拟化平台提供了一些技巧,可以帮助管理员解决上述限制。例如,您可以创建动态磁盘映像,该映像随着虚拟机的使用情况的增加而扩展,以避免虚拟机实际使用之前锁定主机上的存储空间。在某些情况下,您还可以利用直通功能为虚拟机提供直接访问主机物理硬件的功能。
然而,这些功能不是总能生效,例如他们不支持所有的主机或操作系统,他们还会产生额外的管理负担。如果您要运行的应用程序需要裸机访问,最好在裸机服务器上运行这些应用程序。
或者,您可以在裸机服务器上的容器中运行应用程序,以便充分利用这两个方面。
本文转自d1net(转载)