想象一下,假如有一個常用的虛擬主機環境,在那個環境中,不得不在許多用戶之間安全地分割物理資源,用戶必須是分割的,且擁有他們自己的“虛擬空間”。
現在,為了管理這些用戶和他們各自的資源,部署了一個強有力的工具,允許操作系統內核擁有彼此隔離和分割的多用戶空間實例。這些用戶空間實例,也稱之為容器,使用戶在容器中的操作,就像使用自己專用的服務器一樣。對這些容器擁有最高權限的管理員,可以圍繞資源管理、操作系統中與其它容器的交互以及必要的安全參數設置相應策略。同時,這個管理員也可以管理和監視這些容器,甚至為各個節點間的動態負載平衡設置自動策略。
操作系統虛擬化是個偉大的工具,用來創建強大且隔離的多用戶環境。然而,在使用容器和操作系統虛擬化時,很多場景下也帶來了一些新的挑戰:
如果你有超大數量的容器,并且它們需要大量的虛擬機資源;
如果你需要更好的自動化和控制這些容器的部署和管理;
如何創建一個不僅僅能運行在Linux服務器上的容器平臺?
在保證操作可行性的前提下,如何在公有云或私有云以及介于兩者之間的任何地方部署一個解決方案?
在以上場景中,應用容器發揮了巨大的作用,我們來看一個非常具體的例子。像Docker這樣的技術,為運行在Linux上的操作系統級虛擬化平臺增加了新層次的抽象和自動化。Docker使用cgroups來實現了新類型的隔離特性,允許隔離的容器在它們自己的Linux實例上運行。當使用分布在多個不同節點的大量容器時,Docker可以幫助減少新啟動一個虛擬機的額外開銷。
了解這些以后,重要的是要知道,越來越多的組織正在部署構建在Linux服務器上的工作負載。這些工作負載正在運行大數據庫、挖掘操作、大數據引擎等等各種作業。在這些Linux內核中,容器利用率也在增加,像Docker這樣的平臺可以通過以下方式對其進行協助:
更強的容器控制。應用容器幫助抽象操作系統級的虛擬化進程,這給予管理員對提供的服務進行更好地控制,以及更好的安全性和進程限制,甚至更多智能資源隔離。另一重要的方面是,允許跨越不同系統的容器共享資源,并控制它們的共享方式。
創建分布式系統。像Docker這樣的平臺允許管理員管理容器、他們的任務、運行的服務和其它橫跨分布式、多節點和系統的進程。在一個大系統中,Docker有個“source-on-demand”的環境,每個節點需要資源時都可以立即獲得。因此,可以集成需要大規模和大量資源的系統,比如MongoDB。有鑒于此,現在的大數據平臺跨越不同的、高度分布的節點,這些節點位于公有云或服務供應商的私有數據中心。如何將你的容器與云進行集成?
D1Net評論:
Docker和其它開源項目繼續抽象操作系統級的虛擬化,允許更好地對Linux的工作負載進行分布式處理。像Docker這樣的技術圍繞容器管理和自動化道路進行發展。如果你正在使用一個運行在Linux服務器的基于容器的解決方案,該著手看看應用容器如何幫助發展你的生態系統。