技术开发 频道

在容器时代下,操作系统为何如此重要?

  【IT168 评论】运行在Linux容器当中的应用程序都被相互隔离在单独的操作系统副本当中,而这些系统则运行在同一台物理服务器之上。这种解决方案与传统基于虚拟机管理程序的虚拟化方案有所不同,后者是将每款应用程序绑定到一套完整的访客操作系统副本中,并通过虚拟机管理程序的介入实现应用与硬件之间的通信。如此一来,容器机制只需要消耗很少一部分内存等系统资源,而且基本上不会造成任何性能损耗。

  使用容器的一大意义在于,运行在特定环境中的各个操作系统副本往往会以相对均匀的方式并行运作,这是因为它们基本上是作为通用的共享基板存在、所有应用程序则全部运行其上。特定的关联关系可以打包至应用程序当中(在用户空间中的孤立进程之内),但其内核仍然会共享至系统上所运行的各个容器。

容器时代下操作系统为何重要

  有鉴于此,操作系统再也不会像过去那种被配置、调整、集成乃至最终依附于单一应用程序,但并不是说操作系统在这场变革中未能起到重要作用。事实上,由于操作系统负责提供整体框架并支持运行其上的全部容器,它如今所扮演的角色甚至要比硬件服务器虚拟化当中由虚拟机管理程序充当的主机更为关键。(当然,以KVM为例,这款虚拟机管理程序会利用操作系统实现必需的‘类操作系统’功能,但该管理程序内部并没有任何与此要求相关的架构设计。)

  所有适用于虚拟化领域的安全增强、性能优化、可靠性工程以及认证机制都能顺利同容器技术相对接。而且事实上,操作系统肩负着更为重要的使命,即提供一套安全与资源隔离体系——其需要达成的效果比虚拟机管理程序在处理类似任务时更为严苛。在我们即将迎接的未来中,操作系统还必须处理多主机应用程序,也就是作为协调与调度机制对其加以管理。其中包括为跨主机应用程序及容器构建运作模式,并提供必要的服务与API以将应用程序与其对应的合适资源进行对接。换句话来说,Linux正逐步演变以支撑起一套崭新的环境,其中“计算机”将成为一套复杂的连接系统、而不再像过去那样只扮演单一的离散服务器角色。

  在这样的环境下,更重要的一点是利用合理的机制保证应用程序构建的可移植性。就整体概念而言,这样的思路算不上什么新鲜事物。作为行业分析师,我自始至终都在花费大量时间撰写与各类现有虚拟化及拆分技术相关的研究文章。在此之中,“应用程序虚拟化”正是这样一种技术方案。作为一类解决思路,应用程序虚拟化仍然属于利基型业务,但将在未来逐步迈向发展的顶点。以Docker为代表的此类技术充分发挥了容器模式的巨大优势,从而创建出在实际效果上与应用程序虚拟化极为相近的解决方案:将应用程序作为多种层加以构成,并将其在低损耗环境下进行往来移动。

  是的,这绝对是一股正愈演愈烈的操作系统抽象化发展趋势;我们开始逐渐远离过去那种面向各个应用程序实例的纯手动、硬编码式实例操作方式——正如我们当初摆脱由单一服务器负责承载的多个操作系统实例一样。而且没错,要求对泛用性操作系统加以定制的应用程序已经无法在容器型环境当中继续发挥作用并带来良好的匹配效果。当下令容器拥有如此吸引力的主要趋势之一在于,它们已经不再像十年前那样仅在利基空间中挣扎求存,而是朝着可移植、非状态性应用程序实例进行大规模转变。操作系统所扮演的角色仍然非常关键;现在我们需要使用一套标准化基础镜像来承载自己的全部应用程序,而不再以标准基础镜像为模板针对每款应用作出具体调整。

  综合来看,容器时代下的应用程序变得更具适应性、更具移动性、更具分布式特性而且更加轻量化。它们的部署与配置工作引入更多自动化要素。不过它们仍然需要以某些基础作为运行依托——这些基础必须稳定而且开放,并有能力针对新型需求及具体工作负载类型进行演变。能够满足这些条件操作系统,正是Linux。

0
相关文章