歡迎光臨
每天分享高質量文章

如果使用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

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


(點擊圖片閱讀)

溫馨提示:

請搜索“ICT_Architect”“掃一掃”二維碼關註公眾號,點擊原文鏈接獲取更多電子書詳細

求知若渴, 虛心若愚

赞(0)

分享創造快樂