专栏首页云计算D1net容器 VS. 虚拟机:云中应该使用哪一种?

容器 VS. 虚拟机:云中应该使用哪一种?

在开足马力使用容器之前,了解容器与虚拟机在私有云、公共云以及混合云部署之间的区别是至关重要的。

虽然目前大多数的云部署都是基于虚拟机的,但是容器技术为云用户带来了显著的好处。但是,在选择一个取代之前技术的替代品时,了解两者之间的主要区别是很重要的。最大的问题在于虚拟机或容器是否最适合公共云、私有云或混合云模式。这个问题的答案取决于三个主要因素:虚拟机和容器之间的功能性差异、私有云和公共云组件之间的相互依存程度以及用户对他们自己云平台进行定制的意愿。

容器与虚拟机:两者之间的不同

虚拟机和容器两种技术分别代表了创建运行应用的虚拟资源的两种不同方法。使用虚拟机就是由一个特殊的软件系统(系统管理程序)在操作系统(OS)层次对服务器进行分区并创建只共享硬件的真正“虚拟机”。而使用容器技术,虚拟化发生在操作系统层次,所以就是共享操作系统以及一些可能的中间件。

就功能方面而言,虚拟机更加地灵活,因为应用运行的“客户“环境类似于裸机服务器。用户可以选择他们自己的操作系统和中间件,而无需考虑同一台服务器上其他虚拟机所使用的操作系统和中间件。但如果是使用容器技术,那么用户在选择应用程序时需要确定一个通用的操作系统和中间件元素,因为每一个容器都在使用核心服务器平台并将其与其他容器共享。

对于那些使用各种软件平台来运行他们应用的企业用户来说,容器技术可能更难以使用,因为它要求对单个主机平台上进行标准化的工作。即便当所有应用程序都在一个单一的操作系统上运行时,用户也可能需要协调每个应用程序来使用一些或所有中间件工具的单一版本——如果软件是依赖于特定版本的,那么这一点是很难做到的。

另一方面,容器资源开销是较少的,因为它们没有为每一个部署的应用程序或组件重复分配平台软件。这种较低的资源开销可让容器技术在每台服务器上运行更多的组件。此外,应用或组件的部署与重新部署都要快于容器。

因为容器往往是通过诸如Docker这类管理平台进行部署的,通常基于容器的云也比基于虚拟机的云更具有可操作性,而相关管理工具也更加多样化。

如何针对公共云、私有云或混合云选择容器或虚拟机

用户可以在私有云部署中获得容器技术的所有好处。而对于使用标准化操作系统和中间件的企业来说,基于容器的私有云很可能是最好的策略。但是,对于公共云和混合云,使用容器则会带来更多的问题,而虚拟机可能是更好的方法。

例如,使用容器技术的企业所面临的一个挑战就是,公共云中的容器托管服务要比虚拟机服务更难找到。虽然一些基础设施即服务(IaaS)供应商(例如亚马逊网络服务,AWS)提供了容器服务,但是这些服务通常也都覆盖了IaaS服务,同时在很多情况下这些服务也仅适用于使用专用服务或集群托管的客户。所有的用户都可以通过公共IaaS服务部署虚拟机,但是使用容器技术则在安装和操作方面更为复杂,这主要是因为难以在公共云中容纳容器联网。

在公共云中部署和管理容器的困难也让在混合云中部署容器变得更为复杂。首先,应用程序容器部署的最佳实践建议对其所有组件采用共同托管以实现方便的网络连接。但是,这样做会使在云爆发或故障转移时转至公共云资源变得更难以实现——这是混合云的两种最常见用例。

其次,如果云容器平台不兼容,那么中间件或操作系统在应用层次的所有差异将限制容器在云中的部署。这就意味着混合无法跨所有应用程序正常工作。

如果云中的组件分布相对比在数据中心内的更一致,或者如果一家企业以非常结构化的方式将这些组件云化(例如从一组特定的数据中心服务器到一组特定的云服务器),那么基于容器技术的混合云是更易于开发和维护的。这种方法使混合环境的组网和集成变得更易于管理,且更不易出现配置错误。但是,使用虚拟机的方法通常更易于使用标准化工具和整合方法将应用和组件从数据中心部署至云。

简便实施容器技术

在迁移至公共云之前,最好是通过在私有云中进行部署来熟悉容器。深刻了解容器是如何工作的以及在运行中如何才能做好容器的维护,这些知识将有助于选择正确的方法、工具和供应商。诸如Docker或Cloud Foundry之类的容器管理工具是容器实施工作中必不可少的,所以应尽量做好事先功课才觉得最适合的那个技术选项。

就长远来看,很可能是由管理工具来部署基于虚拟机和基于容器的云。随着这些工具自身的不断发展,基于虚拟机云和基于容器云之间的操作差异会变小,而主要的区别将与安全性和合规性相关。如果您现在就要做出一个抉择,请确保容器为您的云应用程序提供足够的隔离,因为容器与虚拟机之间的安全性与合规性差异在今后一段时间内是不可能消失的.

本文分享自微信公众号 - 云计算D1net(D1Net02),作者:Tom Nolle

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-03-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 容器与DevOps 被称为天作之合的7个原因

    作为自动化应用程序部署的一种方式, 容器的流行程度在不同行业的企业环境中不断上升。根据行业研究调查显示, 虽然云原生正在拥抱容器技术,但只有约10%的企业在生产...

    静一
  • 想要使用容器技术 这5类遗留工具就应该被淘汰

    充分利用容器并不只是安装Dockers和激活容器应用程序那么简单。你需要改进的同样还有监控方法、安全性能等。 这么做的理由是,容器并不只是对你过去工作中使用到的...

    静一
  • 容器采用时最常见的N个挑战该如何克服?

    虽然容器技术势头不减,但仍然没有在企业中被广泛采用。虽然许多DevOps团队正在尝试使用容器并将此技术慢慢引入生产环境中来,但大多数组织机构仍然不知道从哪里开始...

    静一
  • 了解云容器的四方面

    对容器的大量需求使企业推出了各种云容器服务。而市场上这么多的选择,很难决定去使用哪一个容器平台或工具。在你了解云容器技术的选择之前,你必须先确定容器是否值得您的...

    企鹅号小编
  • Docker--docker ps 命令与结果解析

    里面包含ps的详细使用教程,虽然是英文的但是实例有一点英语功底就可以看懂,其中包含ps的模糊查询等。

    洋仔聊编程
  • 虚拟机&容器技术 原

    近期无意间看到这样一则消息“LinuxCon+ContainerCon+CloudOpen中国大会在北京成功举办”,初学Linux的小白在使用着虚拟机进行一系列...

    阿dai学长
  • Docker入门实操

    浅色边框标题 docker简介 Linux容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一Linux主机交付多套隔离性Linux环境。 与虚拟机不同,容...

    企鹅号小编
  • 应聘3万的职位,有必要这么刁难我么?

    面试官:就是controller层交给一个spring容器加载,其他的service和dao层交给另外一个spring容器加载,web.xml中有这块配置,这两...

    路人甲Java
  • 容器技术,还处在起点阶段

    容器,Docker,Kubernetes,这些技术已经被使用了四年左右。有些人甚至开始认为这项技术已经成熟了!但我强烈认为,容器基础设施的实现还处于一个成长的阶...

    StoneDemo
  • Docker 系列三(容器管理).

        指明了 -d 运行镜像,会返回容器的 id;如果不指明 -d 运行镜像,会打印出 catalina.out 的 日志,在 [crtl +c] 后,容器即...

    JMCui

扫码关注云+社区

领取腾讯云代金券