首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >虚拟化与容器

虚拟化与容器
EN

Software Engineering用户
提问于 2015-06-22 09:21:00
回答 2查看 882关注 0票数 2

大多数云计算技术都是基于虚拟化的。云计算技术的广告经常提到可靠性和降低成本。但是与像Java这样的容器技术相比,动态迁移和虚拟化的硬件抽象要困难得多。

那么,基于虚拟化的云计算比基于容器的技术更流行的原因是什么呢?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-06-22 09:34:30

灵活性。

如果您使用在容器中运行应用程序的共享宿主,则只能执行一小部分非常特定的任务。

如果您使用虚拟机,您将受到操作系统和管理程序的限制,但是您的机动空间要大得多。

例如,在VM上,您可以访问所有文件,这也意味着您可以安装任何您想要的文件。这样就可以在共享主机平台上做一些你不能做的事情。示例:

  • 如果您需要Redis作为缓存解决方案,您可以这样做。在容器的情况下,你没有这种自由。
  • 如果您需要在内存中有一个分区来进行非常快速的访问,Linux将允许您这样做。;在共享主机上,就没有办法进行这种定制了。

此外,您还可以使用系统管理员多年或几十年来使用的工具来管理服务器。例如,如果您有一个VM,您通常可以使用SSH或通过RDP访问它。在基于容器的服务器中,唯一可以作为客户使用的东西是托管公司提供的(通常是糟糕的)工具。这使得很难对应用程序进行概要分析或调试,甚至生成转储或读取日志文件这一最简单的任务也可能变得不必要地复杂。

集装箱方法本身没有什么问题。它有其完全有效的用途。但这并不能解决所有问题:有时,需要一个实际的虚拟化。

票数 2
EN

Software Engineering用户

发布于 2020-02-04 17:43:26

这个问题已不再准确。今天,由开放式集装箱倡议 (包括Docker)定义的容器化是一种托管复杂应用程序的方法,就好像它们是单独的单元一样。集装箱提供了良好的成本节约和高可用性。这提供了以下好处:

  • 扩展就像添加同一个容器的新实例一样简单。
  • 每个容器都有它所需要的依赖项,并且没有更多的。
    • 这允许在同一台服务器上承载多个版本的服务,否则该服务的依赖项会发生冲突。

  • 像Kubernetes (k8s)这样的编排服务一致地部署您的应用程序,并管理它自己的基础设施。
  • 容器的行为是相同的,无论它们是托管在云端还是在处所,允许您在公司准备好扣动触发器之前“云准备好”。

在这个场景中,如果您需要添加redis缓存,那么您将引入redis容器,并使用编排服务将所有内容连接到一起。

每个主要的云提供商都有一个托管容器服务,包括Amazon、Azure AKS、Google等。通常情况下,云管理托管容器的硬部分,并为其提供部署指导。只要付出最少的努力,您也可以使集群自动扩展。

底线是容器集群运行在虚拟机之上,但是您不再管理它。有一些权衡,但我相信它们是可以管理的:

  • 不能将RDP或SSH放入容器中
  • 监视应用程序的运行情况需要更多的基础设施(例如弹性堆栈、CloudWatch、Splunk或一些等效的日志聚合器)
  • 将应用程序拆分为较小的可重用部分会增加系统的复杂性。

尽管如此,2020年的力量平衡肯定已经转向使用符合OCI的容器来承载您的应用程序。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/287501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档