Docker容器并不缺乏IT方面的技術支持。但是其諸如對Linux的依賴這類的缺陷,讓Docker在整個云計格局中的定位不夠清晰。
在了解云的過程中不關心虛擬機監(jiān)控程序和虛擬機是不可能的,虛擬化是云計算的核心。對于大多數(shù)情況,這代表了基于虛擬機監(jiān)控程序的完全虛擬化,一個主機操作系統(tǒng)和一個虛擬機監(jiān)控程序運行VM分區(qū),像任何獨立的服務器一樣,有自己的操作系統(tǒng)和中間件。然而,虛擬化技術的涵蓋面很廣,這在云中是很有價值的。其中包含著一個普遍的虛擬化模型—容器技術。
在這個容器模型中,服務器運行通過構建半自治的容器來加載應用的操作系統(tǒng)。這些應用共享操作系統(tǒng)或主機,這樣服務器不需要為每一個VM來運行單獨的操作系統(tǒng)。容器在獨立的VM和簡單的多道程序設計之間提供了某種程度的應用隔離,但不是完全隔離。
容器通常是一種更適用于私有云和一些公有云應用的解決方案。當今最流行的容器架構Docker也許就是最完美的平臺。
Docker狂熱沖擊云Docker是一個容器管理系統(tǒng),能夠自動化的創(chuàng)建容器來運行應用/組件。它的基本形式,即使用一組API管理這些容器,可以從模板或者命令構建。Docker正在不斷進化,并且現(xiàn)在已經可以提供編排工具來部署組件。
理論上我們可以在任何支持類似容器分區(qū)的OS上創(chuàng)建一個基于容器的系統(tǒng),但是Docker使用的是Linux的容器工具。正因如此,Docker容器只運行特定Linux的應用和組件。它可以運行在一個不同的OS主機管理的虛擬機上,但它需要確保那個虛擬機里有一個Linux的客戶操作系統(tǒng)來為那些容器提供服務,并且必須只能運行Linux的應用。
Windows對于Docker的支持采用Docker嵌入到虛擬機中的途徑。在Linux主機之外使用Docker很復雜并且很多用戶覺得增加的復雜度超過了易用性。甚至即便用戶在一個非Linux的主機上運行Docker容器,他們仍然受限于只能運行Linux的應用。在Windows服務器上托管Docker容器的能力對于用戶很有價值,因為Windows服務器承諾會大量增加許多基于Linux的應用。
基于VM的虛擬化和云計算擁有隔離的優(yōu)點,對于公有云和服務器整合很有幫助。構建云應用而不是將應用遷移到云降低了隔離級別的支持需求。企業(yè)能夠在公有云VM上,數(shù)據(jù)中心或者甚至是客戶端設備托管容器。Docker的新業(yè)務流程編排工具可以部署基于容器的組件并將他們融合起來支持工作流。這些工具可以用于混合云,輕松的支持故障轉移的功能。
容器體積小,靈活,這使得它們非常適合于負載彈性或者按需添加和刪除功能的動態(tài)應用。將容器架構加載到裸機或者一個VM上所需要的機器鏡像易于開發(fā)并且具備高度可移植性。載入到容器中的應用鏡像由于它們依賴于主機操作系統(tǒng)和中間件服務,也會很容易開發(fā)和部署。
容器熱潮持續(xù),但也并非十全十美容器技術的日益普及不代表它是完美的。虛擬機是最適合公有云多租戶應用的,因為要跨越虛擬機邊界來攻擊相鄰的應用比在容器之間發(fā)起攻擊要困難得多。此外,還缺少對于防止一個容器獲取過量的資源而影響到其他應用方面的保護。要解決這些問題,可以在VM里運行容器和Docker,這正是Docker/VMware聯(lián)盟的基礎。
也有一些提議要發(fā)展虛擬機,讓它們的行為更像容器。這些通常被稱為微型VM。 比如說,Xen Mirage使用一個特制內核來提供某種應用程序隔離,而完全避免了操作系統(tǒng)和中間件復制。
對于試圖在容器技術和虛擬機之間做出抉擇的企業(yè)來說,決定的因素可能是應用結構和來源。通過服務器整合創(chuàng)造的單一應用是大型且持久的,這樣應用就很難從容器化上獲得很多益處。容器非常適合于那些基于SOA/ REST組件化原則的應用。這些應用程序的組件相對較小,分布廣泛,在云之間來回移動,動態(tài)擴展或偶爾運行。一個運行Linux容器的決定其實就是運行Docker的決定。
容器技術和Docker在云計算中的作用將繼續(xù)增長,尤其是隨著新的云特定應用程序的開發(fā)。隨著時間的推移,Docker和虛擬機之間的協(xié)作會更多。更高級別的編排工具將允許用戶推出組件集成到容器或虛擬機--或在VM中的容器中。一種技術不會取代另一種技術,它們將共存并建立彼此之間相互的價值。