为什么在容器化世界中操作系统至关重要

还没有读者喜欢这个。
Outline of a plane in the sky with clouds

Opensource.com

在 Linux 容器中运行的应用程序在一个物理服务器上运行的单个操作系统副本中隔离。这种方法与基于 hypervisor 的虚拟化形成对比,在基于 hypervisor 的虚拟化中,每个应用程序都绑定到 guest 操作系统的完整副本,并通过中间的 hypervisor 与硬件通信。因此,容器消耗的系统资源(如内存)非常少,并且基本上不会对应用程序造成性能开销。

使用容器的含义之一是,给定环境中运行的操作系统副本往往相对同质,因为它们本质上充当所有在其上运行的应用程序的某种通用共享基底。特定的依赖项可以与应用程序一起打包(在用户空间的隔离进程中),但内核在系统上运行的容器之间共享。

因此,操作系统不再像历史常态那样被配置、调整、集成并最终与单个应用程序结合,但这种变化丝毫不减损其重要性。事实上,由于操作系统为位于其上的所有容器提供框架和支持,因此它比硬件服务器虚拟化的情况发挥着更大的作用,在硬件服务器虚拟化中,主机是 hypervisor。(当然,以 KVM 为例,hypervisor 利用操作系统来完成它需要的类似操作系统的功能,但 hypervisor 架构本身并没有要求这样做。)

所有适用于虚拟化世界的安全强化、性能调优、可靠性工程和认证仍然适用于容器化世界。而且,事实上,与 hypervisor 处理其中一些任务的情况相比,操作系统在提供安全性和资源隔离方面承担着更大的责任。我们也在朝着操作系统明确处理多主机应用程序的未来发展,充当它们的编排器和调度器。这包括跨多个主机和容器对应用程序进行建模,并提供服务和 API 以将应用程序放置到适当的资源上。换句话说,Linux 正在不断发展以支持这样一种环境,在这种环境中,“计算机”越来越像是一个由连接系统组成的复杂体,而不是单个离散的服务器。

在这样的环境中,拥有可移植地组合应用程序的机制也变得越来越重要。总体概念并不是什么新鲜事物。在整个 21 世纪初,作为一名行业分析师,我花了很多时间撰写关于当时可用的各种虚拟化和分区技术的研究报告。其中一组技术是“应用程序虚拟化”。作为一个类别,应用程序虚拟化仍然有点小众,但最近被重新构想。包括 Docker 在内的技术正在利用容器模型来创建看起来非常像应用程序虚拟化旨在完成的事情:将应用程序组合为一组层,并在环境中以低开销移动它们。

是的,操作系统绝对正在被抽象化;我们正在摆脱伴随每个应用程序实例的手工制作和硬编码的操作系统实例——就像我们之前摆脱了为每个单独的服务器精心制作的操作系统实例一样。是的,依赖于这种广泛的操作系统定制才能工作的应用程序不适合容器化环境。使容器在今天如此有趣(而不仅仅是十年前的小众)的趋势之一是全面转向更便携和更少状态的应用程序实例。操作系统的作用仍然至关重要;只是您正在所有应用程序中使用标准的 base 镜像,而不是采用该标准的 base 镜像并为每个单独的应用程序进行调整。

将所有这些加在一起,应用程序变得更加适应性强、更易于移动、更易于分发且更轻量级。它们的放置和配置变得更加自动化。但它们仍然需要运行在某些东西之上。一些坚实的东西。一些开放的东西。一些能够为新需求和新型工作负载而发展的东西。而那“某些东西”就是一个(Linux)操作系统。

User profile image.
Gordon Haff 是红帽技术布道者,是一位在客户和行业活动中经常受到高度赞扬的演讲者,专注于包括红帽研究、开源采用和新兴技术领域在内的领域。

7 条评论

操作系统的重要性怎么强调都不为过。文章写得非常好。

天哪,多么无聊的废话!大多数应用程序都不是在手工制作或严重调整的操作系统上运行的。

很大一部分真实世界的应用程序都与操作系统紧密相连,或者在其配置文件中进行了严重调整。
仅仅在 Docker 容器中运行具有默认参数的 Tomcat(正如您可以在周围的许多示例中看到的那样)是一种过于简单的方法。

回复 作者 Curious George (未验证)

今天的情况确实很复杂,这取决于您处理的工作负载类型。传统企业工作负载中存在相当多的不同内核版本、不同配置/调整、不同操作系统。对于新型工作负载(微服务等),则不然。这就是为什么我预计在可预见的未来,硬件虚拟化和容器将混合存在。

回复 作者 mimmus (未验证)

什么是容器?它和 chroot jail 是一样的吗?

------------------------------
Steve Stites

与所有新兴技术一样,人们会发现运动解释存在缺陷。感谢您帮助启动教育过程,这有助于为新的思维方式指明方向,并最终淹没负面情绪。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.