飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

3 类 6 种,主流容器操作系统全比较

  • 2020-05-14
  • 本文字数:3422 字

    阅读完需:约 11 分钟

3类6种,主流容器操作系统全比较

介绍

容器已迅速成为现代数据中心的必要组成部分。容器可以构建在各类操作系统中,那么企业该如何选择最合适的操作系统来运行自己的容器?


在容器部署时,研发的负责人需要知道操作系统的哪些特性和功能对于正在发布的应用程序至关重要,以及是否存在需要额外考虑的其他因素(如可管理性和配置灵活性),不同企业的情况与需求不同,选择自然也不尽相同。


不同的操作系统,如何在特性和基本功能方面进行比较?这些差异如何影响它们支持应用程序的方式?这些都是我们必须考量的重要问题。本文中我们将比较三类具有代表性的操作系统:


  • 传统的全功能操作系统

  • 通用的精简操作系统

  • 专用于容器的操作系统


在每个类别中,我们都会选择两个代表性的产品,这些产品能代表这一大类中的其他全产品或发行版。


通过本文,大家将能更清楚地了解不同操作系统类型之间的差异。IT 负责人们也将更好地了解到,为什么开发人员可以为容器化应用程序选择一个操作系统而不是另一个,以及为什么他们可能支持或质疑这些选择。

全功能操作系统

“全功能操作系统”是什么意思?为什么在容器部署的情况下,完整功能会很重要?本节将介绍为什么在传统服务器部署中使用的操作系统,也可能是为容器平台选择操作系统时的最佳答案。


首先要知道的是,这类操作系统的功能无疑是最齐全的。如果某个应用程序需要某个特定的特性或功能,全功能操作系统或许都能满足它。不过这种“齐全”也是有一定代价的: 在存储、内存和 CPU 资源方面,这类操作系统对系统的要求最高。 同时,这些功能还会增加操作系统的攻击面,为潜在的攻击者提供更多的角落和缝隙进行攻击。不论是价格成本还是安全风险,如果操作系统的这些功能都是应用程序需要的,那么这些成本也就很容易承担了;但如果只需要少量功能,相较之下性价比就略低。


这些功能齐全的操作系统,最适合的用例,是企业需要在单个 OS 实例之上的容器中部署多个不同应用程序。在这些情况下,操作系统的功能的多而全,可能是支持应用程序队列的最经济的方式。

Ubuntu


Ubuntu 已经成为许多企业在服务器、云甚至桌面上的默认操作系统。Canonical 公司为 Ubuntu 提供了非常好的支持,Ubuntu 提供各种可下载格式,包括支持物联网、容器、服务器或云的部署所需的实用程序包、shell、功能和功能集。


如今,Ubuntu 已经开始瓜分曾经由 Red Hat Linux 一家独大的领域:Ubuntu 一贯良好的声誉和企业级的支持,使得对于企业部署而言,它成为了一个稳妥的、“合理的”选择。不过,大家仍需记住的、很重要的一点是,不论在什么情况下,“合理的”都不意味着一定是“最好的”——它的功能齐全也意味着它的庞大,企业需要思考这种重与大是否适合自己。

CentOS


在全功能操作系统这一大类中,Ubuntu 已经成为企业的一大主流选择,除此之外,CentOS 则是另一个流行的、由社区驱动的开源操作系统,它是由 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。


CentOS 强调社区对特性和功能的贡献及支持,同时仍然建立在其 Red Hat 基础的稳定性上。开源不意味着 CentOS 不被大型组织使用——美国国家实验室和几大主流云提供商的服务器上都用着 CentOS。但是 Ubuntu 自称拥有比 CentOS 更快速的更新,其中包括那些更老、但经过良好测试的软件包。

精简的操作系统

容器,尽可能地将少而精的功能汇集在一起,创建完整的应用程序。那么,这类精简的操作系统缺少“完整”Linux 发行版中的哪些功能——这对您的应用程序是否重要?从另一视角来看,将应用程序部署在那些将功能剥离到极限的精简操作系统上,优势是什么?


问题的答案在于,你的应用程序究竟对操作系统有什么要求,而精简的操作系统是否能满足这些基础要求。如果没有周全的准备,在使用过程中还需要人为添加应用程序所需的各种功能和小程序,那选择这类精简操作系统可以说是失败的,因为它在大小和简单性方面的优势所剩无几。


本章节将介绍两个发行版,BusyBox 和 Alpine Linux,以及它们在适当的环境中可以带来的优势。这两个操作系统是相关的——Alpine 是基于 BusyBox 的,但是二者也存在一些关键的差异,使用户会在这二者之间做出不同选择。这些差异不仅涉及具体功能及特性,还涉及支持社区和生态系统。

BusyBox


BusyBox 很适合容器部署,恰巧因为它在设计时没有刻意考虑容器。BusyBox 被其开发人员称为“嵌入式 Linux 的瑞士军刀”,它作为一个单一的小型可执行文件,包含大多数嵌入式应用程序所需的所有功能。这也“迫使”它在容器技术出现之前,就可以开始采用类似容器的方法进行部署了。


BusyBox 可以使用 Linux 或其他 POSIX 操作系统作为其基础进行部署,并将它们与许多常见的 Linux 实用程序捆绑在一起。如此一来,它成为了一个紧凑的单文件可执行文件,其中包含“完整”Linux 发行版的许多功能——尽管这些完整版本中的不少其他功能选项,都以节省空间的名义,被从 BusyBox 中删除了。

Alpine Linux


如前所述,Alpine Linux 基于 BusyBox,但不论是目标还是细节,它都建立在更早期的 Linux 发行版上。BusyBox 是因为是单一可执行文件而体积很小, 而 Alpine Linux 则是使用强化的内核,为其前身 BusyBox 的紧凑、简单的目标增加安全性。


相较于 BusyBox,Alpine Linux 能让开发人员更容易添加功能。它的发行版基于 BusyBox 和 musl 库之上,因此在添加功能的方便性或结构紧凑度的这些维度上,Alpine Linux 一枝独秀。


Alpine Linux 这是一个极限精简的操作系统,能够生成非常小的容器镜像以进行部署,而且加固的内核使其更适用于生产以及开发、部署。

容器操作系统

容器操作系统开箱即用,拥有内置的自动化和容器编排工具。它们被设计和构建为“主机”操作系统——托管 Alpine 和 BusyBox 等容器操作系统的操作系统。既然如此,为什么它们不是每个容器部署的自动选择呢?


容器操作系统的特征在于, 它不仅仅是一个支持容器的软件,而是使用容器技术部署的软件。 “容器一直向下”的体系结构意味部署的自定义程序更高、更灵活,从而比传统的 OS 部署复杂得多。另一方面,对于早期转向容器的组织,或者对于那些不一定适合容器架构的应用程序部署中,“全容器”架构并非那么容易。


对于那些寻找容器操作系统的企业而言,Rancher OS 和 Container Linux 是两个主流的选择。本章节将介绍它们各自的优势,帮助开发人员根据自身情况做进一步选择。

RancherOS


RancherOS 中的每个进程都在 Docker 管理的单独容器中运行。对 Docker 的优化和依赖让 RancherOS 可以做到体积极小、启动极快。


除了基本的性能优势之外,RancherOS 系统服务由 Docker Compose 定义和配置。这种依赖意味着只加载和部署应用程序所需的服务,从而进一步加速和简化部署。通过与 cloud-init 集成,再次简化了部署,从而实现了广泛和高速的自动配置和部署。

Container Linux


CoreOS 的 Container Linux 专为基于云的容器部署而设计。Container Linux 已被 Red Hat 收购,针对公有云或私有云基础架构的集群部署进行了优化。


Container Linux 和内核以及必要的实用程序一起,部署在单个可执行文件中,其他的实用程序和功能都部署在容器中。


Container Linux 长期以来一直被广泛使用,可以在大多数公有云上部署。被 Red Hat 收购并没有减缓它的采用速度。Container Linux 与开源许可一起分发,并拥有一个活跃的开发人员社区。

结语

三大类可用于容器部署操作系统,开发团队应该选择哪种?


如果某个特定服务器的唯一目的是托管容器,那么像 RancherOS 和 Container Linux 这样的容器操作系统非常适合。这类操作系统的自动化、部署速度和一致的容器架构,使其成为那些希望优化容器托管环境的人的最佳选择。


如果要同时考虑容器和非容器应用程序,那么毫无疑问,像 Ubuntu 和 CentOS 这样的传统 Linux 部署也可以用作容器平台。它们的体系结构、实用程序、功能列表将使它们启动速度变慢并且需要更多系统资源,但如果启动速度和最小资源消耗不是关键考虑因素,那么这类操作系统是不错的选择。


还值得关注的是位于上述二者之间的 BusyBox 和 Alpine Linux 这样的极精简操作系统。单从容器部署的角度出发,这类操作系统可以满足需求;不过如果企业存在资源受限的非容器应用程序(例如物联网的应用程序),这些应用程序也应该作为整个应用程序环境的一部分被考虑进来。


了解不同类型操作系统的功能和限制之间的差异,对于任何用于生产的 OS 平台的讨论都至关重要。使用现代操作系统,真正的考量不应该满足于哪个操作系统可以工作,而是需要围绕哪个操作系统能最有效和最高效地完成工作。


2020-05-14 22:261671

评论

发布
暂无评论
发现更多内容

过年前 再带大家卷一波Go高质量知识点

王中阳Go

Go golang go面试题 后端面试题

流批一体化数据加工处理之记录过滤

大河

低代码,流行的软件开发方式

互联网工科生

软件开发 低代码 JNPF

2023年12月文章一览

codists

codists

2024年1月文章一览

codists

一文详解静态图和动态图中的自动求导机制

百度Geek说

Python 深度学习 自动求导 autodiff

部署篇 | MatrixOne与MySQL全面对比

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

解密JavaChassis3:易扩展的多种注册中心支持

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟

科蓝软件启动鲲鹏原生应用开发合作

彭飞

基于 SRAM 的存内计算助力实现节能 AI

申公豹

存内计算

零基础入门Vue之影分身之术——列表渲染&渲染原理浅析

不在线第一只蜗牛

Java Vue 前端 前端开发

开源项目中的设计模式(一) - Alibaba Sentinel与责任链模式

骑牛上青山

Java 设计模式

代码手术刀-自定义你的代码重构工具

京东科技开发者

深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

申公豹

存内计算

「AI Party」喊你来!百度Create大会4月16-17日在深圳举办

飞桨PaddlePaddle

百度 AI 开发者大会

快速熟悉 MatrixOne 内核前端

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

有奖调查 | @所有人,MO有一份问卷邀您填写~

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

如何定义“易用”?无代码/低代码开发平台能力探讨

NocoBase

开源 软件开发 低代码 低代码开发平台 无代码

亿级流量高并发春晚互动前端技术揭秘

京东科技开发者

华为云软件开发生产线CodeArts开发者实践8件套——开发者的进阶宝典!

华为云PaaS服务小智

软件开发 华为云

云原生安全DevSecOps思考

薛猫

云原生 k8s 安全 DevSecOps

一行命令找出 Linux 中所有真实用户

互联网工科生

Linux

甲辰龙年,中国科技十大趋势

脑极体

科技趋势

「云原生可观测团队」获选「InfoQ 年度技术内容贡献奖」

阿里巴巴云原生

阿里云 云原生

3类6种,主流容器操作系统全比较_文化 & 方法_Rancher_InfoQ精选文章