1. 程式人生 > >OpenStack、KVM、Docker——Docker之後還需要OpenStack嗎?

OpenStack、KVM、Docker——Docker之後還需要OpenStack嗎?

Docker從一個新興的技術到一個商品化模式,這一過程的發展速度很驚人,它炙手可熱的同時也給帶來一些困惑。這也帶來了一些同學的質疑和評論:假如用了Docker再去用OpenStack是否合適?

Docker從一個新興的技術到一個商品化模式,這一過程的發展速度很驚人,它炙手可熱的同時也給帶來一些困惑。這也帶來了一些同學的質疑和評論:假如用了Docker再去用OpenStack是否合適?本文來自Helion惠普雲端計算,深入淺出的對OpenStack和Docker進行類比。

以下是原文:

Solomon Hykes創立了Docker,沒有想到過Docker會人氣爆棚,成為僅次於OpenStack的最受歡迎的雲開源專案。然而聽說過Docker的朋友很少知道其真正的意義,很多人會被各種概念混淆,甚至把OpenStack和Docker進行類比。

Docker的相關背景

簡單來說,Docker提供了一種程式執行的容器,同時保證這些容器相互隔離。虛擬機器也有類似的功能,但是它通過Hypervisor建立了一個完整的作業系統棧。

不同於虛擬機器的方式,Docker依賴於Linux自帶的LXC(Linux Containers)技術。LXC利用了Linux可以對程序做記憶體、CPU、網路隔離的特性。Docker映象不需要新啟動一個作業系統,因此提供了一種輕量級的打包和執行程式的方式。而且Docker能夠直接訪問硬體,從而使它的I/O操作比虛擬機器要快得多。

Docker可以直接跑在物理伺服器上,這引起大家的疑問:假如已經用了Docker,還有必要使用OpenStack嗎?

還有必要使用OpenStack嗎?觀點如下:

這個問題和OpenStack沒有直接的聯絡,也可以套在其他雲平臺上。大家為什麼會拿Docker和OpenStack做比較的原因是:OpenStack是私有云環境中最流行的雲平臺,在私有云環境中,大家認為可以把Docker作為另一種選擇。

有關於Hypervisor的誤區:很多KVM和Docker的效能測試的對比跟OpenStack一點關係都沒有,因為OpenStack只是一種框架。事實上這種效能測試(不管是KVM還是Docker)是跑在OpenStack下,這表明了KVM和Docker可以共存。當使用OpenStack去管理Docker情況下,Docker和OpenStack的爭論是沒有意義的。

雲平臺提供一個完整管理資料中心的解決方案,至於用哪種hypervisor或container只是雲平臺中的一個小部分。像OpenStack這樣的雲平臺包含了多租戶的安全、隔離、管理、監控、儲存、網路等其他部分。雲資料中心的管理需要很多服務支撐,但這和用Docker還是KVM其實沒多大關係。

Docker不是一個全功能的VM, 它有很多嚴重的缺陷,比如安全、Windows支援,因此不能完全替代KVM。現在Docker社群一直在彌補這些缺陷,當然這會帶來一定的效能損耗。

原生hypervisor的效能、容器化的效能、應用的效能是不一樣的東西,相互對比沒有意義。

把Docker容器打包進KVM映象中對Docker執行幾乎沒有影響。這種架構通常是用hypervisor來管理計算資源,而像Heat、Cloudify、Kubernetes這樣的的orchestration layer都用於管理在hypervisor中的docker容器。

總結

正確看待OpenStack、KVM、Docker的方式應該是: OpenStack用於管理整個資料中心,KVM和Docker作為相應的補充,KVM用於多租戶的計算資源管理,Docker Container用於應用程式的打包部署。