您知道为什么应该使用容器。但是您知道部署容器得用哪种基础设施吗? 作为托管Docker和其他容器环境的平台,裸机服务器是否比虚拟机更好? 答案当然取决于很多因素,本文将通过列举裸机服务器和虚拟机上运行容器的优缺点来讨论。我将专注于Docker,但这里分享的经验通常适用于任何类型的容器平台。 裸机VS虚拟机 权衡裸机服务器和虚拟化主机环境各自的优缺点不是一个新课题,CTO们在21世纪初就开始思考了,当时虚拟化刚开始在数据中心推广,Docker则还没出现。
简而言之,裸机服务器的主要优点包括: 更高的性能,因为没有系统资源浪费在硬件模拟上; 充分利用所有机器资源,高需求期间无闲置; 更简单的管理,……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
您知道为什么应该使用容器。但是您知道部署容器得用哪种基础设施吗? 作为托管Docker和其他容器环境的平台,裸机服务器是否比虚拟机更好?
答案当然取决于很多因素,本文将通过列举裸机服务器和虚拟机上运行容器的优缺点来讨论。我将专注于Docker,但这里分享的经验通常适用于任何类型的容器平台。
裸机VS虚拟机
权衡裸机服务器和虚拟化主机环境各自的优缺点不是一个新课题,CTO们在21世纪初就开始思考了,当时虚拟化刚开始在数据中心推广,Docker则还没出现。
简而言之,裸机服务器的主要优点包括:
- 更高的性能,因为没有系统资源浪费在硬件模拟上;
- 充分利用所有机器资源,高需求期间无闲置;
- 更简单的管理,因为主机、网络和磁盘等硬件基础架构更少。
虚拟机则具有以下优点:
- 通过在服务器之间传输虚拟机映像,轻松实现在主机间移动应用程序;
- 不同虚拟机中运行的应用程序实现隔离,不仅有助于安全,也能降低管理复杂度。
- 通过在同一类型虚拟机上部署所有应用程序,即使底层服务器是异构的,也能实现软件环境的跨平台一致性。
但是虚拟机也有一些缺点,包括:
- 服务器资源可能未完全使用。例如,如果您在服务器主机上分配存储空间以创建虚拟机磁盘映像,即使磁盘连接的虚拟机不使用全部空间,该存储空间也不可用于其他用途。
- 虚拟机无法直接访问物理硬件。如果您希望虚拟机能够将计算操作转移到主机的GPU上,您很难或无法实现,因为虚拟机是从底层主机环境中抽象出来的。
- 物理服务器直接访问硬件,虚拟服务器访问软件模拟的硬件。
现代虚拟化平台提供了一些技巧,可以帮助管理员解决上述限制。例如,您可以创建动态磁盘映像,该映像随着虚拟机的使用情况的增加而扩展,以避免虚拟机实际使用之前锁定主机上的存储空间。在某些情况下,您还可以利用直通功能为虚拟机提供直接访问主机物理硬件的功能。
然而,这些功能不是总能生效,例如他们不支持所有的主机或操作系统,他们还会产生额外的管理负担。如果您要运行的应用程序需要裸机访问,最好在裸机服务器上运行这些应用程序。
或者,您可以在裸机服务器上的容器中运行应用程序,以便充分利用这两个方面。
化圆为方:在裸机上运行容器
裸机上的容器提供虚拟机的许多优点,但没有虚拟化的缺点。当您在裸机服务器上运行容器时,容器允许您:
在应用程序中访问裸机硬件,而不依赖直通技术,因为(容器中的)应用程序运行在驱动底层硬件的同一个操作系统上。
有效利用系统资源。尽管您也可以设置计算、存储和网络资源的容器使用量,通常这些资源不会被单个容器独占。因此,主机可以按需分配系统资源。
为您的应用程序提供裸机性能,因为没有硬件模拟层将它们与主机服务器分离。
此外,通过使用裸机容器主机,您仍然可以获得一般只用虚拟机才可能实现的优点:
在便携式环境中部署应用程序的能力,可在主机服务器之间轻松移动。
应用程序隔离。虽然容器可能没法提供与虚拟机相同的隔离级别,但是容器允许管理员阻止应用程序彼此交互,并对与每个容器关联的权限和资源访问性设置严格的限制。
简而言之,在裸机上运行容器能让您化圆为方。您不仅得到裸机性能和直接访问硬件的所有好处,还能得到虚拟机的可移植性和隔离功能。
您为什么不应该总是将容器托管在裸机上
您可能想知道为什么还有不在裸机上运行容器的情况,一举两得的事情为什么不做?
使用裸机服务器托管容器的缺点如下:
升级物理服务器很困难。如果要将裸机服务器替换为较新的服务器,则必须在新服务器上从头开始创建容器环境。但是,如果容器环境是虚拟机映像的一部分,则可以将映像从旧服务器移动到新服务器。
大多数云需要使用虚拟机。的确有一些裸机型云主机,例如Rackspace的OnMetal和Oracle的Bare Metal Cloud Service,然而,大多数公有云提供商只提供虚拟机。如果要使用其平台来运行容器,则必须使用虚拟机。
不是所有硬件或软件配置都支持容器。现在您可以使用虚拟机平台(如VMware或基于内核的虚拟机)托管几乎任何类型的操作系统,也可以在几乎任何类型的服务器上运行该虚拟化平台。但Docker则有限得多。如果直接托管到裸机,Docker只能在Linux和特定版本Windows Server上运行。这意味着如果您既要在裸机服务器运行Windows Server 2012(Docker当前不支持的版本)还想要托管Docker,您只能先在Windows主机上安装一个虚拟机再容纳Docker。
您不能在Windows主机上运行Linux容器,反之亦然。同样的,Linux容器只能在Linux主机上运行,反之亦然。所以,如果您有一个裸机Windows Server,但您想运行一个Docker容器来托管为Linux编译的应用程序,您将不得不在Windows服务器上安装一个Linux虚拟机,并将其作为托管Docker的基础。
裸机服务器不提供回滚功能。大多数现代虚拟化平台提供的一个超酷的功能,是能够拍摄虚拟机快照,且以后需要时能回滚到该快照。裸机服务器做不到这一点(当然,技术上可以使用操作系统或文件系统本身的回滚功能,但这些做不到虚拟机镜像回滚那么无缝)。基于容器的快照和回滚则没有意义,因为容器生来就是短暂且没有什么可以回滚的。因此,利用简单系统回滚的唯一方法是将容器跑在虚拟机上。
结论
在裸机服务器上还是在虚拟机上运行容器是一个艰难的决定。您必须权衡各种利弊,以确定哪种方案最适合您的公司。
好消息是,无论您在何处托管容器,您都可以受益于容器化的所有核心功能,包括简单的应用程序可移植性,可扩展性和敏捷性。
作者
相关推荐
-
在AWS上使用VMC探索虚拟数据中心体系结构
由于VMware Cloud在2017年的VMworld大会上宣布即将推出支持AWS的版本,虚拟数据中心的普及 […]
-
构建具备容器和数据镜像功能的高可用性系统
IT宕机可能对任何业务产生重大影响。传统情况下,这使得备份数据恢复的速度成为IT团队的主要焦点。然而,即使备份工具得到改进,许多组织的恢复时间仍然不够……
-
Gartner:容器、云、高速网络和物联网仍是IT流行趋势
从容器和高速网络到物联网和边缘计算,这些趋势继续定义着IT专业人员在未来数据中心中的角色以及他们需要磨练的技能。
-
容器热潮:还在等什么?
如今虚拟化已成为IT主流,因为它通过在系统硬件和软件之间提供抽象层来简化软件开发。但即使这种广泛采用的技术,也受到行业永远在追求更好的工具这一趋势的威胁。