Docker助力Unikernel革命迎來(lái)騰飛
譯文Docker公司正著手將其容器方案同一類完全不同的應(yīng)用程序打包方式加以合并——也就是unikernel。
為了實(shí)現(xiàn)這項(xiàng)目標(biāo),Docker方面收購(gòu)了來(lái)自英國(guó)劍橋的初創(chuàng)企業(yè)Unikernel Systems公司,后者長(zhǎng)久以來(lái)一直致力于這方面研發(fā)工作。容器王者的計(jì)劃是利用Docker工作流創(chuàng)建出最小化、按需配置的操作系統(tǒng),其中包含運(yùn)行單一特定應(yīng)用程序所必需的全部功能,且能夠運(yùn)行在任何平臺(tái)之上——從微型物聯(lián)網(wǎng)裝置到數(shù)據(jù)中心服務(wù)器。
“通過(guò)將Docker中為人熟知的工具與可移植優(yōu)勢(shì)同下一代unikernel技術(shù)的卓越效率及針對(duì)性結(jié)合起來(lái),”Docker公司在新聞稿中指出,“企業(yè)客戶將能夠擁有一套極為靈活的平臺(tái),從而在不受制于任何特定基礎(chǔ)設(shè)施的前提下實(shí)現(xiàn)頒式應(yīng)用程序的構(gòu)建、發(fā)布與運(yùn)行。”
簡(jiǎn)約而不簡(jiǎn)單
事實(shí)上,unikernel技術(shù)的設(shè)計(jì)思路并不復(fù)雜:選取一款應(yīng)用程序,審視其必需的操作系統(tǒng)調(diào)用,而后對(duì)該應(yīng)用進(jìn)行編譯并將其需要的操作系統(tǒng)組成部分打包成單一的統(tǒng)一內(nèi)核當(dāng)中。
雖然unikernel的構(gòu)建難度較大,但其二進(jìn)制鏡像在尺寸方面要遠(yuǎn)遠(yuǎn)小于應(yīng)用程序與完整操作系統(tǒng)的打包產(chǎn)物。另外,由于unikernel當(dāng)中的活動(dòng)組件更少,因此其攻擊面也會(huì)相應(yīng)減小——發(fā)生故障的機(jī)率亦大大降低。
正如在Docker正式出場(chǎng)之前,容器技術(shù)概念已經(jīng)存在相當(dāng)長(zhǎng)一段時(shí)間但卻始終未能得到廣泛認(rèn)同,unikernel機(jī)制也面臨著同樣的問(wèn)題。Xen項(xiàng)目(部分項(xiàng)目成員目前正效力于Unikernel Systems公司)在不久之前創(chuàng)造出了Xen Mirage unikernel系統(tǒng),這是一套由OCaml語(yǔ)言編寫而成的定制化應(yīng)用程序與操作系統(tǒng)堆棧。而作為另一個(gè)unikernel相關(guān)項(xiàng)目,IncludeOS則將該操作系統(tǒng)中的各項(xiàng)服務(wù)作為庫(kù)添加到一款C++應(yīng)用程序當(dāng)中。
Unikernel能夠?qū)?yīng)用程序代碼以及其運(yùn)行所必需的操作系統(tǒng)組件進(jìn)行編譯,從而保證該應(yīng)用擁有恰好必要的運(yùn)行條件。如此一來(lái),我們就能夠獲得體積極為小巧的單一、快速啟動(dòng)二進(jìn)制系統(tǒng)鏡像,其攻擊面亦相當(dāng)有限。
更簡(jiǎn)單的構(gòu)建途徑
那么Docker公司打算如何使用這一技術(shù)概念?簡(jiǎn)而言之:其利用現(xiàn)有Docker工具集以簡(jiǎn)化在各類Docker支持平臺(tái)之上將應(yīng)用程序打包為unikernel的流程。
Docker公司市場(chǎng)營(yíng)銷副總裁David Messina指出,這套方案將為unikernel世界帶來(lái)“民主化”。根據(jù)他的觀點(diǎn),利用Docker的常規(guī)工具與工作流進(jìn)行unikernel構(gòu)建將“使得unikernel為成千上萬(wàn)已經(jīng)接納Docker技術(shù)的企業(yè)及組織機(jī)構(gòu)所接受。”
根據(jù)Unikernel Systems公司CTO Anil Madhavapeddy的說(shuō)法,這套工作流相當(dāng)于首先在某套容器中選取應(yīng)用程序外加配套的配置文件,而后在無(wú)需開發(fā)人員介入的前提下實(shí)現(xiàn)unikernel構(gòu)建。整個(gè)構(gòu)建過(guò)程與應(yīng)用程序自身所使用的編程語(yǔ)言密切相關(guān),這意味著利用C語(yǔ)言編寫的應(yīng)用程序?qū)碛型耆煌贘ava或者OCaml應(yīng)用的關(guān)聯(lián)性組合。目前對(duì)該工作流進(jìn)行最大程度統(tǒng)一化調(diào)整的任務(wù)已經(jīng)基本完成,這意味著我們可以通過(guò)同樣的流程實(shí)現(xiàn)x86與ARM編譯。
下一步發(fā)展方向
Madhavapeddy還對(duì)比了Docker計(jì)劃采取的構(gòu)建方式與當(dāng)前現(xiàn)有unikernel系統(tǒng)的“昂貴、手動(dòng)”構(gòu)建模式(例如NetApp的OnTap以及思科的IOS)。
“我們已經(jīng)確保其針對(duì)性傾向能夠?qū)嶋H起效,”他指出,同時(shí)強(qiáng)調(diào)稱開發(fā)人員也可以通過(guò)他們目前常用的各高級(jí)API構(gòu)建低級(jí)組件。“Unikernel當(dāng)中包含大量行之有效的構(gòu)建組件,不過(guò)過(guò)去它們一直很難被拼裝起來(lái)。”
在“為容器匹配量身定做的操作系統(tǒng)”之外,Docker公司給出的下階段發(fā)展方向是利用CoreOS等方案進(jìn)一步傳播這項(xiàng)概念。不過(guò)unikernel方案不太可能徹底取代容器技術(shù),正如容器也并不能完全取代虛擬機(jī)系統(tǒng)一樣。
毫無(wú)疑問(wèn),如果unikernel真的能夠通過(guò)略高于容器化應(yīng)用的構(gòu)建難度加以實(shí)現(xiàn),那么其將帶來(lái)極為可觀的發(fā)展前景。其擁有諸多顯著優(yōu)勢(shì),包括允許我們?cè)诜?wù)器之上以更高密度運(yùn)行應(yīng)用。另外,這也意味著Docker公司將能夠以前所未有的方式實(shí)現(xiàn)微服務(wù)應(yīng)用模式——例如立足于資源極為有限的客戶端環(huán)境(也就是物聯(lián)網(wǎng)裝置)。
原文標(biāo)題:Docker kicks off the unikernel revolution
【51CTO.com獨(dú)家譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明來(lái)源】