Docker從一個(gè)新興的技術(shù)到一個(gè)商品化模式,這一過程的發(fā)展速度很驚人,它炙手可熱的同時(shí)也給帶來一些困惑。這也帶來了一些同學(xué)的質(zhì)疑和評(píng)論:假如用了Docker再去用OpenStack是否合適?本文來自Helion惠普云計(jì)算,深入淺出的對OpenStack和Docker進(jìn)行類比。
以下是原文:
Solomon Hykes創(chuàng)立了Docker,沒有想到過Docker會(huì)人氣爆棚,成為僅次于OpenStack的最受歡迎的云開源項(xiàng)目。然而聽說過Docker的朋友很少知道其真正的意義,很多人會(huì)被各種概念混淆,甚至把OpenStack和Docker進(jìn)行類比。
Docker的相關(guān)背景
簡單來說,Docker提供了一種程序運(yùn)行的容器,同時(shí)保證這些容器相互隔離。虛擬機(jī)也有類似的功能,但是它通過Hypervisor創(chuàng)建了一個(gè)完整的操作系統(tǒng)棧。
不同于虛擬機(jī)的方式,Docker依賴于Linux自帶的LXC(Linux Containers)技術(shù)。LXC利用了Linux可以對進(jìn)程做內(nèi)存、CPU、網(wǎng)絡(luò)隔離的特性。Docker鏡像不需要新啟動(dòng)一個(gè)操作系統(tǒng),因此提供了一種輕量級(jí)的打包和運(yùn)行程序的方式。而且Docker能夠直接訪問硬件,從而使它的I/O操作比虛擬機(jī)要快得多。
Docker可以直接跑在物理服務(wù)器上,這引起大家的疑問:假如已經(jīng)用了Docker,還有必要使用OpenStack嗎?
還有必要使用OpenStack嗎?觀點(diǎn)如下:
這個(gè)問題和OpenStack沒有直接的聯(lián)系,也可以套在其他云平臺(tái)上。大家為什么會(huì)拿Docker和OpenStack做比較的原因是:OpenStack是私有云環(huán)境中最流行的云平臺(tái),在私有云環(huán)境中,大家認(rèn)為可以把Docker作為另一種選擇。
有關(guān)于Hypervisor的誤區(qū):很多KVM和Docker的性能測試的對比跟OpenStack一點(diǎn)關(guān)系都沒有,因?yàn)镺penStack只是一種框架。事實(shí)上這種性能測試(不管是KVM還是Docker)是跑在OpenStack下,這表明了KVM和Docker可以共存。當(dāng)使用OpenStack去管理Docker情況下,Docker和OpenStack的爭論是沒有意義的。
云平臺(tái)提供一個(gè)完整管理數(shù)據(jù)中心的解決方案,至于用哪種hypervisor或container只是云平臺(tái)中的一個(gè)小部分。像OpenStack這樣的云平臺(tái)包含了多租戶的安全、隔離、管理、監(jiān)控、存儲(chǔ)、網(wǎng)絡(luò)等其他部分。云數(shù)據(jù)中心的管理需要很多服務(wù)支撐,但這和用Docker還是KVM其實(shí)沒多大關(guān)系。
Docker不是一個(gè)全功能的VM, 它有很多嚴(yán)重的缺陷,比如安全、Windows支持,因此不能完全替代KVM。現(xiàn)在Docker社區(qū)一直在彌補(bǔ)這些缺陷,當(dāng)然這會(huì)帶來一定的性能損耗。
原生hypervisor的性能、容器化的性能、應(yīng)用的性能是不一樣的東西,相互對比沒有意義。
把Docker容器打包進(jìn)KVM鏡像中對Docker運(yùn)行幾乎沒有影響。這種架構(gòu)通常是用hypervisor來管理計(jì)算資源,而像Heat、Cloudify、Kubernetes這樣的的orchestration layer都用于管理在hypervisor中的docker容器。
總結(jié)
正確看待OpenStack、KVM、Docker的方式應(yīng)該是: OpenStack用于管理整個(gè)數(shù)據(jù)中心,KVM和Docker作為相應(yīng)的補(bǔ)充,KVM用于多租戶的計(jì)算資源管理,Docker Container用于應(yīng)用程序的打包部署。