排行榜 统计
  • 文章总数:1135 篇
  • 评论总数:5 条
  • 分类总数:8 个
  • 最后更新:5天前

容器 vs 虚拟机

本文阅读 7 分钟
首页 常用工具 正文

概述

Linux® 容器虚拟机(VM)都是封装型计算环境,里面组合了各种 IT 组件并独立于系统的其余部分。两者的主要区别在于扩展性和可移植性。

  • 容器通常以兆字节为度量单位。它们封装的内容大小不会超过一个应用及其运行所需的所有文件,并且通常用于封装执行特定任务的单个功能(称为微服务)。容器因其轻量级特性及共享的操作系统(OS),非常便于在多个环境之间移动。
  • 虚拟机则一般以千兆字节为度量单位。它们通常包含自己的操作系统(OS),因而能够一次执行多个资源密集型功能。由于虚拟机的可用资源大大增加,因此它们可以抽象、分离、复制和模拟整个服务器、操作系统、台式机、数据库和网络

除了技术差异之外,容器与虚拟机之间的对比恰恰代表了新兴 IT 实践与传统 IT 架构之间的较量。

新兴 IT 实践云原生开发、CI/CDDevOps)之所以可行,是因为工作负载被分解成了很小的服务单元(通常为功能或微服务)。这些小型单元被完好地封装在容器中,这样多个团队就可以在不中断或影响其他容器中的代码的情况下,处理应用或服务的各个部分。

传统 IT 架构(单体式和传统架构)则是将工作负载的各个部分都放在一个无法拆解的大文件中,因此需要在一个更大的环境(通常是虚拟机)中进行整体封装。在虚拟机中构建和运行整个应用曾经一度司空见惯,但将所有代码和依赖项都放在一个地方会导致虚拟机体量过大 ,并因此导致在推送更新时出现级联故障和停机。

我应该使用哪一种技术?

这要取决于您是需要一个可以轻松移动的小型实例(容器),还是需要一种半永久分配的定制 IT 资源?

容器具有规模小、轻量化的特性,因而可轻松地在裸机系统以及公共云、私有云、混合云和多云环境中移动。此外,它们也是部署当今云原生应用的理想环境,云原生应用是一些微服务的集合,旨在跨公共云私有云混合云多云环境提供一致的开发和自动化管理体验。原生云应用可以加快新应用的构建,促进现有应用的优化,并完善所有应用间的连接。需要注意的是,容器必须与底层操作系统兼容。相比虚拟机,容器最适合用于:

  • 构建云原生应用
  • 封装微服务
  • 拓展 DevOps 或 CI/CD 实践
  • 在共享同一操作系统的多样化 IT 环境中移动可扩展的 IT 项目

与单个容器相比,虚拟机能够运行更多的操作,因而它们一直是(现在也是)封装单体式工作负载的惯用方式。但是,由于对操作系统、应用和库的依赖性,这种扩展功能也令虚拟机的可移植性大大降低。相比容器,虚拟机最适合用于:

  • 存放传统的单体式工作负载
  • 隔离存在风险的开发周期
  • 置备基础架构资源(如网络、服务器和数据
  • 在另一个操作系统内运行不同的操作系统(例如在 Linux 上运行 Unix)

它们是如何运作的?

一种叫虚拟机监控程序的软件会把资源与物理机分隔开,以便进行分区并专门用于虚拟机。当用户发出需要从物理环境中获取更多资源的虚拟机指令时,虚拟机监控程序就会将该请求转发到物理系统并将更改放到缓存中。从作用上来看,虚拟机就像物理服务器,它会成倍放大应用依赖项和大量 OS 占用空间(而运行单个应用或微服务往往并不需要这么大的占用空间)造成的弊端。

容器中包含了微服务或应用及运行所需的一切要素。容器中的所有内容都保存在镜像(一个基于代码且包含所有库和依赖项的文件)上。您可以将这些文件视为 Linux 发行版的一个安装实例,因为镜像中包含 RPM 软件包和配置文件。由于容器是如此之小,因此通常会有数百个容器松散地耦合在一起,所以要使用容器编排平台(例如红帽 OpenShiftKubernetes)来置备和管理它们。

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/1097.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
-- 展开阅读全文 --
深盾Java 虚拟化保护,防止反编译
« 上一篇 11-03
15 种TypeScript最常用的实用程序类型
下一篇 » 11-03