《什么是Unikernel?》要點:
本文介紹了什么是Unikernel?,希望對您有用。如果有疑問,可以聯系我們。
隨著以Docker引領的容器化模型持續升溫,現在很有必要關注一下持續快速發展的Unikernel領域.
Unikernel是精簡專屬的庫操作系統(LibraryOS),它能夠使用高級語言編譯并直接運行在商用云平臺虛擬機管理程序之上.
相比于容器技術它們有很多的優點,不僅僅是超快的啟動時間和更小的攻擊面.還有很多技術仍然處于研究階段,例如微軟研發的Drawbridge、MirageOS和HaLVM等,與無服務器架構技術可以無縫結合.目前,Docker已收編了Unikernel.
Docker,已經被證實是一種有效的應用管理技術.它方便了不同環境的應用程序部署,解決了“在這里正常工作,但在別的環境不行”這類問題,類似于Gradle的包裝器.
我們已經看到了使用Docker的熱潮,以及特別是圍繞Docker的生態圈的形成,這使得Docker的應用已經超出了開發/測試環境而進入了生產環境.它逐步從一個工具進化成了復雜的技術平臺.
開發團隊之所以喜愛Docker是因為Docker的鏡像格式更容易實現開發和生產環境之間的對等.
與虛擬機相比,容器有著輕量級、啟動速度快、隔離性好等優點,它也在一定程度上提高了不同應用之間共享云基礎設施時的安全性.此外容器技術對于在同一操作系統之中運行多個應用提供了專門的安全和兼容性上的優化.
在云端運行的應用程序大多數并不是針對在云端運行而經過優化的.通常一個容器的大小通常在MB甚至GB級別,顯而易見真正的應用只占了這其中很小的一個部分.容器本身假設需要依附底層操作系統,太過笨重,其中包括安全漏洞和臃腫軟件,即使已經進行了簡化實際上也依舊如此.
將大型服務器分隔成一個個小型虛擬機讓許多新的公司得以成功創辦起來、實現規模化.這對新服務來說是好事,可是那些虛擬機有許多是單一用途的,不過含有基本上整個操作系統,在進行操作系統復制時所有的服務和子系統不管有用沒用都被復制了,這種操作系統本身像Web服務器那樣運行應用程序.這就意味著,占用的一大部分資源沒有被使用,也沒有必要,這不僅導致成本高昂,還帶來了安全風險(更大的攻擊面).
容器技術對于傳統操作系統的依賴可能會導致它的敗亡.
Unikernel使用戶可以從一個服務庫中選擇應用需要的操作系統服務而無須整個操作系統,用戶選擇的服務則會成為應用的一部分.
Unikernel是與某種語言緊密相關的,一種Unikernel只能用一種語言寫程序,這個LibraryOS加上你自己寫的程序最終被編譯成成一個操作系統,這個操作系統只跑你的程序,里面也只有你這一個程序,沒有其它冗余的程序,沒有多進程切換,所以系統很小也很簡單.
雖然Docker容器的image比傳統的虛擬機(以G計)要小很多,但是一般也是好幾百兆,而Unikernel由于不包含其它不必要的程序(ls、echo、cd、tar等),體積非常小,通常只有幾兆甚至可以更小.比如mirageOS的示例mirage-skeleton編譯出來的xen虛擬機只有2M.
Unikernel在整個服務器的架構中取消了操作系統,應用直接運行在hypervisor或者硬件上.試圖抹去現代操作系統帶來的一些復雜性.因為“通用”的操作系統(就像任何Linux和Windows的發行版),通常會伴隨著帶來一些對你的應用來說并不需要的驅動、依賴包、服務、等等.
這就使得它獲得了下面幾個優勢:
今后五年Unikernel有可能完全取代容器技術,就算不能取代它也會成為容器技術的強力補充,值得關注.
其他的有HaLVM(Haskell)、Clive(Go)、IncludeOS(cpp)、Ling(Erlang)、Runtime.js(JavaScript)等.
Unikernel是容器技術發展的必然產物,小、簡單、安全、高效,當你看到云客戶端時就像看到單應用硬件一樣,那就是Unikernel試圖解決的:刪除應用與硬件中間臃腫的部分,從而讓最“精簡”的操作系統運行你的代碼.
原文出處:點融黑幫
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4501.html