虛擬化問題
服務器和桌面虛擬化目前已經成為大多數數據中心的標準應用部署。那么這些數據中心為什么還關注Docker和其他容器技術呢?容器能夠幫助克服虛擬化的2大根本問題。
大多數情況下,虛擬機是過耗的。數據中心需要的是同時同物理主機能夠安全運行多應用的能力。將應用歸類,這樣其中錯誤的代碼就不會導致其他應用的崩潰,這一點是基本的需求。除此之外,還要謹慎的分配主機服務器資源給這些實體。虛擬化之前,IT能夠實施物理機的應用控制。虛擬化實質上再現了整個物理服務器作為一個虛擬機運行一個應用。虛擬化有監控程序驅動。它的作用是抽象服務器資源,讓監控程序分配資源給VM。監控程序執行抽象的開銷將造成性能損耗。
通常的解決方案是投入更多的硬件,一般是以CPU的形式而非裸機服務器。
容器的優勢
容器要比VM更高效。并非虛擬化或抽象整個硬件,它們只是抽象應用或應用的部分。如此粒度的虛擬化意味著資源將不會浪費在冗余的部分。它同時是低CPU、內存和存儲需求的。
Docker利用寫入時復制文件系統創建容器。通常看來,一個主映像將被創建,然后從主影像上創建容器。大多數虛擬機監控程序都有類似的功能,但映像必須是一個完整的虛擬機。容器技術帶來更加精確的映像。創建的容器可以使應用的一個分支或應用的子集。
Docker存儲注意事項
Docker存儲的一些注意都和虛擬化的相類似,然而也存在一些不同。Docker專為直連存儲應用而設計,但隨著環境的成熟,也會出現主機間共享信息和遷移容器的多樣需求。共享存儲將支持高可用、共享訪問和容器遷移。但共享存儲勢必要適應比一般虛擬服務器環境更多樣的負載,從I/O角度來看,Docker存儲環境和虛擬桌面基礎設施相類似。
Docker環境支持從幾十個容器擴展到幾百個、甚至上千,在幾秒鐘之內,當然它也能迅速的縮小至幾十個。適應這樣的伸縮變化需要支持閃存和磁盤的混合系統。這個系統還可能要為適應容器增長而做擴展設計。
今天,不像VMware和Hyper-V,Docker在存儲上幾乎毫無特色。缺少特點說明存儲硬件上的軟件還要強大,讓企業能夠具備他們過去所具備的功能。Docker環境通過RESTful API實施自動化,以編程方式創建、執行以及移除。這很有意義,存儲系統本身通過RESTful API完全腳本化。
Docker和容器技術本身還在起步階段,在接下來的時間里還會有重大的變化。保守來看,Docker將在存儲管理、增減新協議支持以及提供存儲服務方面更有發展。支持的存儲系統需要足夠靈活以適應支持多協議帶來的變化。
今天,Docker已經支持應用部署和測試。對著數據中心數量的上升,越來越多的企業數據中心將會進行比以往更多的開發工作。Docker對于這些環境來講是理想的。但就像虛擬化開始應用于實驗環境后來進入商業領域,Docker和容器作為測試開發工具起步也將在未來的企業應用中找到位置。