當前位置:
首頁 > 科技 > 如果使用Docker後,還需要OpenStack嗎?

如果使用Docker後,還需要OpenStack嗎?

Solomon Hykes創立了Docker,沒有想到過Docker會人氣爆棚,成為僅次於OpenStack的最受歡迎的雲開源項目。

然而聽說過Docker的朋友很少知道其真正的意義,很多人會被各種概念混淆,甚至把OpenStack和Docker進行類比,三周前看到一篇好文章(雖然發此篇時間上已經優勢全無,但依仗我們精準的理解,翻譯和挑選眼光,還是決定無恥滴發了),答案可以在以下這篇Nati Shalom的博文中找到,在此感謝朱榮澤同學的技術翻譯矯正。

Docker從一個新興的技術到一個商品化模式,這一過程的發展速度很驚人,它炙手可熱的同時也給帶來一些困惑。

筆者從一些剛開始用Docker的同學聽到一些評論和疑問: 假如用了Docker再去用OpenStack是否合適?

討論之前,先介紹Docker的相關背景:

簡單來說,Docker提供了一種程序運行的容器,同時保證這些容器相互隔離。虛擬機也有類似的功能,但是它通過Hypervisor創建了一個完整的操作系統棧。不同於虛擬機的方式,Docker依賴於Linux自帶的LXC(Linux Containers)技術。LXC利用了Linux可以對進程做內存、CPU、網路隔離的特性。Docker鏡像不需要新啟動一個操作系統,因此提供了一種輕量級的打包和運行程序的方式。而且Docker能夠直接訪問硬體,從而使它的I/O操作比虛擬機要快得多。

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

最近Boden Russell在DockerCon上做了關於Docker和KVM的性能測試對比圖表。和預期的一樣,啟動KVM和Docker容器的時間差異非常顯著,而且在內存和CPU利用率上,雙方差距非常大,如下表所示。

雙方巨大的性能差異,導致了在相同工作負載下,KVM需要更多的CPU和內存資源,導致成本上升。

觀點如下:

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

2、有關於Hypervisor的誤區:

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

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

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

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

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

結論:

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

1、Docker提供一種特定的軟體打包方式,使得軟體可以保持在相同的環境下運行。

2、Docker為微服務提供了很好的容器。

3、Docker在OpenStac、裸機上運行幾乎一樣。

總得來說,對於大部分的應用場景,使用那種雲平台都可以。比如我要給一個DevOps小組提供自動化開發和測試環境,我會考慮直接在物理伺服器上跑Docker。

Orchestration對於這兩種環境(OpenStack和Docker)是很好的抽象工具。

使用Docker的Orchestration框架的好處是可以在任意時候在OpenStack和裸機環境中切換,也就是說你可以指定Docker跑在OpenStack或裸機環境中。OpenStack Orchestration工具Heat從Icehouse版本開始支持Docker。Cloudify是一個基於開源TOSCA 的Orchestration,它可以跑在openstack、VMwara、AWS、裸機環境中,最近也支持Docker。

http://natishalom.typepad.com/nati_shaloms_blog/2014/11/do-i-need-openstack-if-i-use-docker.html

如何快速成為被仰視的技術牛人

溫馨提示:

求知若渴, 虛心若愚


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 架構師技術聯盟 的精彩文章:

分散式文件系統設計,該從哪些方面考慮?
大型分散式系統中的緩存架構

TAG:架構師技術聯盟 |