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