大多數情況下,虛擬機是過耗的。數據中心需要的是同時同物理主機能夠安全運行多應用的能力。將應用歸類,這樣其中錯誤的代碼就不會導致其他應用的崩潰,這一點是基本的需求。除此之外,還要謹慎的分配主機服務器資源給這些實體。虛擬化之前,IT能夠實施物理機的應用控制。
虛擬化實質上再現了整個物理服務器作為一個虛擬機運行一個應用。虛擬化有監控程序驅動。它的作用是抽象服務器資源,讓監控程序分配資源給VM。監控程序執行抽象的開銷將造成性能損耗。通常的解決方案是投入更多的硬件,一般是以CPU的形式而非裸機服務器。
容器要比VM更高效。并非虛擬化或抽象整個硬件,它們只是抽象應用或應用的部分。如此粒度的虛擬化意味著資源將不會浪費在冗余的部分。它同時是低CPU、內存和存儲需求的。
Docker利用寫入時復制文件系統創建容器。通常看來,一個主映像將被創建,然后從主影像上創建容器。大多數虛擬機監控程序都有類似的功能,但映像必須是一個完整的虛擬機。容器技術帶來更加精確的映像。創建的容器可以使應用的一個分支或應用的子集。
Docker存儲的一些注意都和虛擬化的相類似,然而也存在一些不同。Docker專為直連存儲應用而設計,但隨著環境的成熟,也會出現主機間共享信息和遷移容器的多樣需求。共享存儲將支持高可用、共享訪問和容器遷移。Docker環境通過RESTful API實施自動化,以編程方式創建、執行以及移除。這很有意義,存儲系統本身通過RESTful API完全腳本化。
Docker已經支持應用部署和測試。對著數據中心數量的上升,越來越多的企業數據中心將會進行比以往更多的開發工作。Docker對于這些環境來講是理想的。但就像虛擬化開始應用于實驗環境后來進入商業領域,Docker和容器作為測試開發工具起步也將在未來的企業應用中找到位置。