在开足马力使用容器之前,了解容器与虚拟机在私有云、公共云以及混合云部署之间的区别是至关重要的。
虽然目前大多数的云部署都是基于虚拟机的,但是容器技术为云用户带来了显著的好处。但是,在选择一个取代之前技术的替代品时,了解两者之间的主要区别是很重要的。最大的问题在于虚拟机或容器是否最适合公共云、私有云或混合云模式。这个问题的答案取决于三个主要因素:虚拟机和容器之间的功能性差异、私有云和公共云组件之间的相互依存程度以及用户对他们自己云平台进行定制的意愿。
容器与虚拟机:两者之间的不同
虚拟机和容器两种技术分别代表了创建运行应用的虚拟资源的两种不同方法。使用虚拟机就是由一个特殊的软件系统(系统管理程序)在操作系统(OS)层次对服务器进行分区并创建只共享硬件的真正“虚拟机”。而使用容器技术,虚拟化发生在操作系统层次,所以就是共享操作系统以及一些可能的中间件。
就功能方面而言,虚拟机更加地灵活,因为应用运行的“客户“环境类似于裸机服务器。用户可以选择他们自己的操作系统和中间件,而无需考虑同一台服务器上其他虚拟机所使用的操作系统和中间件。但如果是使用容器技术,那么用户在选择应用程序时需要确定一个通用的操作系统和中间件元素,因为每一个容器都在使用核心服务器平台并将其与其他容器共享。
对于那些使用各种软件平台来运行他们应用的企业用户来说,容器技术可能更难以使用,因为它要求对单个主机平台上进行标准化的工作。即便当所有应用程序都在一个单一的操作系统上运行时,用户也可能需要协调每个应用程序来使用一些或所有中间件工具的单一版本——如果软件是依赖于特定版本的,那么这一点是很难做到的。
另一方面,容器资源开销是较少的,因为它们没有为每一个部署的应用程序或组件重复分配平台软件。这种较低的资源开销可让容器技术在每台服务器上运行更多的组件。此外,应用或组件的部署与重新部署都要快于容器。
因为容器往往是通过诸如Docker这类管理平台进行部署的,通常基于容器的云也比基于虚拟机的云更具有可操作性,而相关管理工具也更加多样化。
如何针对公共云、私有云或混合云选择容器或虚拟机
用户可以在私有云部署中获得容器技术的所有好处。而对于使用标准化操作系统和中间件的企业来说,基于容器的私有云很可能是最好的策略。但是,对于公共云和混合云,使用容器则会带来更多的问题,而虚拟机可能是更好的方法。
例如,使用容器技术的企业所面临的一个挑战就是,公共云中的容器托管服务要比虚拟机服务更难找到。虽然一些基础设施即服务(IaaS)供应商(例如亚马逊网络服务,AWS)提供了容器服务,但是这些服务通常也都覆盖了IaaS服务,同时在很多情况下这些服务也仅适用于使用专用服务或集群托管的客户。所有的用户都可以通过公共IaaS服务部署虚拟机,但是使用容器技术则在安装和操作方面更为复杂,这主要是因为难以在公共云中容纳容器联网。
在公共云中部署和管理容器的困难也让在混合云中部署容器变得更为复杂。首先,应用程序容器部署的最佳实践建议对其所有组件采用共同托管以实现方便的网络连接。但是,这样做会使在云爆发或故障转移时转至公共云资源变得更难以实现——这是混合云的两种最常见用例。
其次,如果云容器平台不兼容,那么中间件或操作系统在应用层次的所有差异将限制容器在云中的部署。这就意味着混合无法跨所有应用程序正常工作。
如果云中的组件分布相对比在数据中心内的更一致,或者如果一家企业以非常结构化的方式将这些组件云化(例如从一组特定的数据中心服务器到一组特定的云服务器),那么基于容器技术的混合云是更易于开发和维护的。这种方法使混合环境的组网和集成变得更易于管理,且更不易出现配置错误。但是,使用虚拟机的方法通常更易于使用标准化工具和整合方法将应用和组件从数据中心部署至云。
简便实施容器技术
在迁移至公共云之前,最好是通过在私有云中进行部署来熟悉容器。深刻了解容器是如何工作的以及在运行中如何才能做好容器的维护,这些知识将有助于选择正确的方法、工具和供应商。诸如Docker或Cloud Foundry之类的容器管理工具是容器实施工作中必不可少的,所以应尽量做好事先功课才觉得最适合的那个技术选项。
就长远来看,很可能是由管理工具来部署基于虚拟机和基于容器的云。随着这些工具自身的不断发展,基于虚拟机云和基于容器云之间的操作差异会变小,而主要的区别将与安全性和合规性相关。如果您现在就要做出一个抉择,请确保容器为您的云应用程序提供足够的隔离,因为容器与虚拟机之间的安全性与合规性差异在今后一段时间内是不可能消失的。
本文转自d1net(转载)