容器运行在哪里?裸机服务器OR虚拟机?

日期: 2016-11-27 作者:Chris Tozzi翻译:秦明焓 来源:TechTarget中国

您知道为什么应该使用容器。但是您知道部署容器得用哪种基础设施吗? 作为托管Docker和其他容器环境的平台,裸机服务器是否比虚拟机更好? 答案当然取决于很多因素,本文将通过列举裸机服务器和虚拟机上运行容器的优缺点来讨论。我将专注于Docker,但这里分享的经验通常适用于任何类型的容器平台。 裸机VS虚拟机 权衡裸机服务器和虚拟化主机环境各自的优缺点不是一个新课题,CTO们在21世纪初就开始思考了,当时虚拟化刚开始在数据中心推广,Docker则还没出现。

简而言之,裸机服务器的主要优点包括: 更高的性能,因为没有系统资源浪费在硬件模拟上; 充分利用所有机器资源,高需求期间无闲置; 更简单的管理,……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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的基础。

裸机服务器不提供回滚功能。大多数现代虚拟化平台提供的一个超酷的功能,是能够拍摄虚拟机快照,且以后需要时能回滚到该快照。裸机服务器做不到这一点(当然,技术上可以使用操作系统或文件系统本身的回滚功能,但这些做不到虚拟机镜像回滚那么无缝)。基于容器的快照和回滚则没有意义,因为容器生来就是短暂且没有什么可以回滚的。因此,利用简单系统回滚的唯一方法是将容器跑在虚拟机上。

结论

在裸机服务器上还是在虚拟机上运行容器是一个艰难的决定。您必须权衡各种利弊,以确定哪种方案最适合您的公司。

好消息是,无论您在何处托管容器,您都可以受益于容器化的所有核心功能,包括简单的应用程序可移植性,可扩展性和敏捷性。



翻译

秦明焓
秦明焓

HP服务器产品架构师。

相关推荐