写点什么

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

评论

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

关于数字货币的几点问题及回应

CECBC

区块链如何助推著原创保护

CECBC

读《Software Engineering at Google》(09)

术子米德

架构师成长笔记

读《Software Engineering at Google》(10)

术子米德

架构师成长笔记

企业管理理念之人本善还是本恶

秋去冬来春未远

企业管理 人性本善 人性本恶 一念之差

另一视角看元宇宙:元宇宙文化正悄然改变世界

CECBC

Nocalhost - 让云原生时代的开发更高效

沃趣科技

云原生 Nocalhost 应用开发

一文读懂在OpenHarmony轻量设备开发应用

OpenHarmony开发者

OpenHarmony OpenHarmony应用开发 轻量设备

Web3.0 时代,我们的生活将产生什么变化?

CECBC

spring-cloud-kubernetes的服务发现和轮询实战(含熔断)

程序员欣宸

java 4月月更

高效压缩位图在推荐系统中的应用

vivo互联网技术

redis 推荐 存储

API对接之模板方法

Rubble

4月日更 4月月更

读《Software Engineering at Google》(08)

术子米德

架构师成长笔记

Docker 实战教程之从入门到提高 (七)

Jerry Wang

Docker 容器 docker image 容器镜像 4月月更

web前端培训javaScript的内存管理机制分享

@零度

JavaScript 前端开发

利用 Dio 完成数据删除操作

岛上码农

ios 跨平台 移动端开发 flutter开发 安卓开发

Camtasia Studio2022汉化版

茶色酒

Camtasia2022

[Day19]-[动态规划]分割等和子集

方勇(gopher)

LeetCode 动态规划 数据结构和算法

一文论述元宇宙、NFT及不可回避的Web3 时代

CECBC

Linux驱动开发-外部中断的注册使用(按键为例)

DS小龙哥

4月月更

老旧项目二次开发指南

阿毛

重构 项目架构 二次开发

论利润中心内部核算和集团核算

秋去冬来春未远

阿米巴 利润中心 集团成本

在线CSV转Plaintext(txt)工具

入门小站

工具

upnp.exe进程

Sher10ck

日积月累

基于云效Codeup一键恢复删库保护数据资源,程序员删库跑路不复存在

阿里云云效

云计算 阿里云 程序员 代码安全 删库保护

什么是知识库管理系统?如何搭建企业知识库系统?

小炮

企业知识管理 企业知识管理工具 知识管理系统

MySQL 无法满足查询性能?北明天时选择 TDengine 实现热网监控和能源分析

TDengine

数据库 tdengine 开源 时序数据库

java培训JVM内存模型和GC机制的解析

@零度

Java JVM GC

不同阶段的人,如何学习Rust?加入非凸,一起学习!

非凸科技

rust 招聘 编程语言‘

Go 入门很简单:Writer和Reader接口

宇宙之一粟

接口 Go 语言 4月月更

TASKCTL C/S客户端两种不同的登陆模式

TASKCTL

分布式 ETL 批量操作 自动化运维 调度任务

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