在開足馬力使用容器之前,了解容器與虛擬機在私有云、公共云以及混合云部署之間的區別是至關重要的。
雖然目前大多數的云部署都是基于虛擬機的,但是容器技術為云用戶帶來了顯著的好處。但是,在選擇一個取代之前技術的替代品時,了解兩者之間的主要區別是很重要的。最大的問題在于虛擬機或容器是否最適合公共云、私有云或混合云模式。這個問題的答案取決于三個主要因素:虛擬機和容器之間的功能性差異、私有云和公共云組件之間的相互依存程度以及用戶對他們自己云平臺進行定制的意愿。
容器與虛擬機:兩者之間的不同
虛擬機和容器兩種技術分別代表了創建運行應用的虛擬資源的兩種不同方法。使用虛擬機就是由一個特殊的軟件系統(系統管理程序)在操作系統(OS)層次對服務器進行分區并創建只共享硬件的真正“虛擬機”。而使用容器技術,虛擬化發生在操作系統層次,所以就是共享操作系統以及一些可能的中間件。
就功能方面而言,虛擬機更加地靈活,因為應用運行的“客戶“環境類似于裸機服務器。用戶可以選擇他們自己的操作系統和中間件,而無需考慮同一臺服務器上其他虛擬機所使用的操作系統和中間件。但如果是使用容器技術,那么用戶在選擇應用程序時需要確定一個通用的操作系統和中間件元素,因為每一個容器都在使用核心服務器平臺并將其與其他容器共享。
對于那些使用各種軟件平臺來運行他們應用的企業用戶來說,容器技術可能更難以使用,因為它要求對單個主機平臺上進行標準化的工作。即便當所有應用程序都在一個單一的操作系統上運行時,用戶也可能需要協調每個應用程序來使用一些或所有中間件工具的單一版本——如果軟件是依賴于特定版本的,那么這一點是很難做到的。
另一方面,容器資源開銷是較少的,因為它們沒有為每一個部署的應用程序或組件重復分配平臺軟件。這種較低的資源開銷可讓容器技術在每臺服務器上運行更多的組件。此外,應用或組件的部署與重新部署都要快于容器。
因為容器往往是通過諸如Docker這類管理平臺進行部署的,通常基于容器的云也比基于虛擬機的云更具有可操作性,而相關管理工具也更加多樣化。
如何針對公共云、私有云或混合云選擇容器或虛擬機
用戶可以在私有云部署中獲得容器技術的所有好處。而對于使用標準化操作系統和中間件的企業來說,基于容器的私有云很可能是最好的策略。但是,對于公共云和混合云,使用容器則會帶來更多的問題,而虛擬機可能是更好的方法。
例如,使用容器技術的企業所面臨的一個挑戰就是,公共云中的容器托管服務要比虛擬機服務更難找到。雖然一些基礎設施即服務(IaaS)供應商(例如亞馬遜網絡服務,AWS)提供了容器服務,但是這些服務通常也都覆蓋了IaaS服務,同時在很多情況下這些服務也僅適用于使用專用服務或集群托管的客戶。所有的用戶都可以通過公共IaaS服務部署虛擬機,但是使用容器技術則在安裝和操作方面更為復雜,這主要是因為難以在公共云中容納容器聯網。
在公共云中部署和管理容器的困難也讓在混合云中部署容器變得更為復雜。首先,應用程序容器部署的最佳實踐建議對其所有組件采用共同托管以實現方便的網絡連接。但是,這樣做會使在云爆發或故障轉移時轉至公共云資源變得更難以實現——這是混合云的兩種最常見用例。
其次,如果云容器平臺不兼容,那么中間件或操作系統在應用層次的所有差異將限制容器在云中的部署。這就意味著混合無法跨所有應用程序正常工作。
如果云中的組件分布相對比在數據中心內的更一致,或者如果一家企業以非常結構化的方式將這些組件云化(例如從一組特定的數據中心服務器到一組特定的云服務器),那么基于容器技術的混合云是更易于開發和維護的。這種方法使混合環境的組網和集成變得更易于管理,且更不易出現配置錯誤。但是,使用虛擬機的方法通常更易于使用標準化工具和整合方法將應用和組件從數據中心部署至云。
簡便實施容器技術
在遷移至公共云之前,最好是通過在私有云中進行部署來熟悉容器。深刻了解容器是如何工作的以及在運行中如何才能做好容器的維護,這些知識將有助于選擇正確的方法、工具和供應商。諸如Docker或Cloud Foundry之類的容器管理工具是容器實施工作中必不可少的,所以應盡量做好事先功課才覺得最適合的那個技術選項。
就長遠來看,很可能是由管理工具來部署基于虛擬機和基于容器的云。隨著這些工具自身的不斷發展,基于虛擬機云和基于容器云之間的操作差異會變小,而主要的區別將與安全性和合規性相關。如果您現在就要做出一個抉擇,請確保容器為您的云應用程序提供足夠的隔離,因為容器與虛擬機之間的安全性與合規性差異在今后一段時間內是不可能消失的。