在容器時代下,操作系統(tǒng)為何如此重要
譯文運行在Linux容器當中的應用程序都被相互隔離在單獨的操作系統(tǒng)副本當中,而這些系統(tǒng)則運行在同一臺物理服務器之上。這種解決方案與傳統(tǒng)基于虛擬機管理程序的虛擬化方案有所不同,后者是將每款應用程序綁定到一套完整的訪客操作系統(tǒng)副本中,并通過虛擬機管理程序的介入實現(xiàn)應用與硬件之間的通信。如此一來,容器機制只需要消耗很少一部分內存等系統(tǒng)資源,而且基本上不會造成任何性能損耗。
使用容器的一大意義在于,運行在特定環(huán)境中的各個操作系統(tǒng)副本往往會以相對均勻的方式并行運作,這是因為它們基本上是作為通用的共享基板存在、所有應用程序則全部運行其上。特定的關聯(lián)關系可以打包至應用程序當中(在用戶空間中的孤立進程之內),但其內核仍然會共享至系統(tǒng)上所運行的各個容器。
有鑒于此,操作系統(tǒng)再也不會像過去那種被配置、調整、集成乃至最終依附于單一應用程序,但并不是說操作系統(tǒng)在這場變革中未能起到重要作用。事實上,由于操作系統(tǒng)負責提供整體框架并支持運行其上的全部容器,它如今所扮演的角色甚至要比硬件服務器虛擬化當中由虛擬機管理程序充當的主機更為關鍵。(當然,以KVM為例,這款虛擬機管理程序會利用操作系統(tǒng)實現(xiàn)必需的‘類操作系統(tǒng)’功能,但該管理程序內部并沒有任何與此要求相關的架構設計。)
所有適用于虛擬化領域的安全增強、性能優(yōu)化、可靠性工程以及認證機制都能順利同容器技術相對接。而且事實上,操作系統(tǒng)肩負著更為重要的使命,即提供一套安全與資源隔離體系——其需要達成的效果比虛擬機管理程序在處理類似任務時更為嚴苛。在我們即將迎接的未來中,操作系統(tǒng)還必須處理多主機應用程序,也就是作為協(xié)調與調度機制對其加以管理。其中包括為跨主機應用程序及容器構建運作模式,并提供必要的服務與API以將應用程序與其對應的合適資源進行對接。換句話來說,Linux正逐步演變以支撐起一套嶄新的環(huán)境,其中“計算機”將成為一套復雜的連接系統(tǒng)、而不再像過去那樣只扮演單一的離散服務器角色。
在這樣的環(huán)境下,更重要的一點是利用合理的機制保證應用程序構建的可移植性。就整體概念而言,這樣的思路算不上什么新鮮事物。作為行業(yè)分析師,我自始至終都在花費大量時間撰寫與各類現(xiàn)有虛擬化及拆分技術相關的研究文章。在此之中,“應用程序虛擬化”正是這樣一種技術方案。作為一類解決思路,應用程序虛擬化仍然屬于利基型業(yè)務,但將在未來逐步邁向發(fā)展的頂點。以Docker為代表的此類技術充分發(fā)揮了容器模式的巨大優(yōu)勢,從而創(chuàng)建出在實際效果上與應用程序虛擬化極為相近的解決方案:將應用程序作為多種層加以構成,并將其在低損耗環(huán)境下進行往來移動。
是的,這絕對是一股正愈演愈烈的操作系統(tǒng)抽象化發(fā)展趨勢;我們開始逐漸遠離過去那種面向各個應用程序實例的純手動、硬編碼式實例操作方式——正如我們當初擺脫由單一服務器負責承載的多個操作系統(tǒng)實例一樣。而且沒錯,要求對泛用性操作系統(tǒng)加以定制的應用程序已經無法在容器型環(huán)境當中繼續(xù)發(fā)揮作用并帶來良好的匹配效果。當下令容器擁有如此吸引力的主要趨勢之一在于,它們已經不再像十年前那樣僅在利基空間中掙扎求存,而是朝著可移植、非狀態(tài)性應用程序實例進行大規(guī)模轉變。操作系統(tǒng)所扮演的角色仍然非常關鍵;現(xiàn)在我們需要使用一套標準化基礎鏡像來承載自己的全部應用程序,而不再以標準基礎鏡像為模板針對每款應用作出具體調整。
綜合來看,容器時代下的應用程序變得更具適應性、更具移動性、更具分布式特性而且更加輕量化。它們的部署與配置工作引入更多自動化要素。不過它們仍然需要以某些基礎作為運行依托——這些基礎必須穩(wěn)定而且開放,并有能力針對新型需求及具體工作負載類型進行演變。能夠滿足這些條件操作系統(tǒng),正是Linux。
原文鏈接: