限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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:261830

评论

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

零元尝鲜|阿里云 Grafana 商业化服务正式发布

阿里巴巴云原生

阿里云 云原生 Grafana 可观测工具

谢孟军:中国 Go 语言领军人的创业第五年

腾源会

开源 Go 语言 腾源会 WeOpen Talk

佬技术总监,是这样优化产线MySQL数据库配置的

梦想橡皮擦

5月月更

JVM进阶(十四)——初识JAVA 类加载机制

No Silver Bullet

Java 类加载机制 5月月更

typeof和instanceof

源字节1号

FLASK项目动态更新配置的方法

西北望高楼

Python flask

移动端异构运算技术-GPU OpenCL 编程(基础篇)

百度Geek说

后端

首届 FinClip Hackathon 圆满落幕,亚马逊云科技|云服务平台助力获奖团队高速成长

FinClip

亚马逊 finclip FinClip Hackthon

透过实例demo带你认识gRPC

华为云开发者联盟

spring gRPC 数据编码 请求映射

带你聚焦GaussDB(DWS)存储时游标使用

华为云开发者联盟

sql 数据处理 GaussDB(DWS) 游标 动态游标

AI简报:图像超分模型 EDSR+RDN

AIWeker

人工智能 5月月更 超分 AI简报

【刷题第13天】剑指 Offer 06. 从尾到头打印链表

白日梦

5月月更

JSON数据传输大法第一式——用OADate处理日期格式

葡萄城技术团队

json 前端 表格开发 表格 表格技术

「深度」国产GPU的“成色”与“现实”

Finovy Cloud

服务器 GPU服务器

重磅官宣!摩尔线程携手7家核心分销商伙伴共拓GPU市场机遇

科技热闻

茶饮市场当前情况如何?走入下半场的现制茶战局,又将去向何方?

易观分析

茶饮

当开放服务网格 OSM 遇到 Pipy

Flomesh

Service Mesh 服务网格 SMI OSM

Nacos源码系列—订阅机制的前因后果(下)

牧小农

源码 nacos

详解CVE-2022-0847 DirtyPipe漏洞

华为云开发者联盟

安全 漏洞 splice syscall 内存未初始化

Android技术分享| Context浅析

anyRTC开发者

android 音视频 WebRTC Context 移动开发

堡垒机属于什么设备?是网络设备吗?

行云管家

网络安全 服务器 堡垒机 网络设备

【C 语言】指针 Four 之[" * & 的应用"、通过指针交换变量值、指针变量的说明、 指针类型的意义(1)、指针类型的意义(2)]

謓泽

5月月更

(win)C、C++处理文件名称

DS小龙哥

5月月更

前端路由工作原理与使用

CRMEB

【FinClip 黑客马拉松优秀参赛项目@灰鲸疫情地图】疫情之下,安全出行的一站式解决方案

FinClip

finclip FinClip Hackthon 疫情地图

“易+”开源计划丨基于标准 WebRTC 低延迟直播开源实践

网易智企

WebRTC 低延时

Clickhouse:日志表占用大量磁盘空间怎么办?

Ken

Clickhouse 日志表

SAP Marketing Cloud Contact 模型的导入配置和数据合并原理

汪子熙

Cloud SAP 云产品 5月月更

天才制造者:独行侠、科技巨头和AI |深度学习崛起十年

OneFlow

人工智能 神经网络 深度学习 DeepMind 开源公司

用了Scrum越来越累?这三点帮你走出困境

华为云开发者联盟

Scrum 团队 估算 计划会议 需求梳理

有奖调研!第四期(2021-2022)传统行业云原生技术落地调研——央国企篇

York

容器 DevOps 微服务 云原生

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