容器操作系统虚拟化
Linux容器中运行的应用程序被隔离在物理服务器上运行的操作系统的单个副本中。 该方法与基于虚拟机管理程序的虚拟化形成对比,在虚拟机管理程序中,每个应用程序都绑定到来宾操作系统的完整副本,并通过中间的虚拟机管理程序与硬件进行通信。 结果,容器仅消耗很少的系统资源(例如内存),并且基本上不会给应用程序带来任何性能开销。
使用容器的含义之一是,在给定环境中运行的操作系统副本趋向于相对同质,因为它们本质上充当了在上面运行的所有应用程序的一种共同的共享基础。 特定的依赖项可以与应用程序一起打包(在用户空间中的隔离进程中),但是内核在系统上运行的容器之间共享。
因此,没有像历史规范那样对操作系统进行配置,调整,集成和最终结合到单个应用程序,但是对于这一变化,操作系统同样重要。 实际上,由于操作系统为位于其上方的所有容器提供了框架和支持,因此与主机作为管理程序的硬件服务器虚拟化相比,它起着更大的作用。 (当然,例如,在KVM的情况下,管理程序将操作系统用于其所需的类似于操作系统的功能,但是管理程序体系结构中并没有固有的要求。)
适用于虚拟化世界的所有安全性强化,性能调整,可靠性工程和认证仍然适用于容器化环境。 而且,实际上,与管理程序正在处理其中某些任务的情况相比,操作系统在提供安全性和资源隔离方面承担了更大的责任。 我们还朝着操作系统显式处理多主机应用程序的未来发展,它们将作为它们的协调器和调度程序。 这包括跨多个主机和容器对应用程序进行建模,并提供服务和API,以将应用程序放置在适当的资源上。 换句话说,Linux正在发展以支持这样一种环境,在该环境中,“计算机”正日益成为连接系统而不是单个离散服务器的复杂环境。
在这样的环境中,拥有一种可移植地组成应用程序的机制也变得越来越重要。 总体概念并不是什么特别新颖的。 在整个过程中,作为行业分析师,我花了很多时间来撰写有关当时可用的各种虚拟化和分区技术的研究笔记。 其中一种技术是“应用程序虚拟化”。 作为一个类别,应用程序虚拟化仍然是一个利基市场,但是最近已经对其进行了重新构想。 包括Docker在内的技术都在利用容器模型来创建类似于应用程序虚拟化所要实现的功能:将应用程序作为一组层进行组合,并在低开销的环境中移动它们。
是的,绝对有一个持续不断的操作系统抽象; 我们正在远离伴随每个应用程序实例的手工制作和硬编码的操作实例,就像我们先前从为每个服务器精心设计的操作系统实例上脱离一样。 而且,是的,依赖于此类广泛的操作系统自定义功能才能运行的应用程序与容器化环境并不是很好的匹配。 当今使容器如此有趣的趋势之一是,它们以十年前没有(超越利基市场)的方式变得如此有趣,这是朝着更加可移植和状态更少的应用程序实例的全面转变。 操作系统的角色仍然很重要。 只是您在所有应用程序中都使用了标准基础映像,而不是获取该标准基础映像并针对每个应用程序进行了调整。
将所有内容加在一起,应用程序将变得适应性更强,移动性更强,分布式更轻巧。 它们的放置和配置变得更加自动化。 但是他们仍然需要继续努力。 坚实的东西。 东西开了。 能够满足新需求和新类型工作负载的需求。 那就是(Linux)操作系统。
翻译自: https://opensource.com/business/14/8/why-operating-systems-matter
容器操作系统虚拟化