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”或“掃一掃”二維碼關註公眾號,點選原文連結獲取更多電子書詳細。
求知若渴, 虛心若愚