Docker的核心是什么?

責(zé)任編輯:editor005

作者:王旭

2015-05-01 08:04:00

摘自:CSDN

在基礎(chǔ)技術(shù)創(chuàng)業(yè)這個(gè)圈子里,Docker算是最火的獨(dú)角獸了。而從運(yùn)行性能看,虛擬化的性能雖然有一定損失,但差距并不是太大:它拋棄傳統(tǒng)VM試圖模擬完整機(jī)器的思路,而是以應(yīng)用為單元進(jìn)行"集裝封箱"

在基礎(chǔ)技術(shù)創(chuàng)業(yè)這個(gè)圈子里,Docker算是最火的獨(dú)角獸了。不久前Docker剛剛完成了9500萬(wàn)美元的新一輪投資。要知道Docker是個(gè)純開(kāi)源,完全底層Building Block的技術(shù),而且到目前為止Docker還沒(méi)有真正的商業(yè)產(chǎn)品。

那么, 究竟什么讓Docker這么火呢?

大家都知道:

Docker = LXC + AUFS

從一方面看,Docker從誕生至今都定位于Container之上,那么Docker的核心是Container么?而從另一方面,Docker在標(biāo)準(zhǔn)的LXC之上又融合AUFS這樣的分層鏡像管理機(jī)制,那么AUFS是Docker的核心?

話還是從我們的DVM項(xiàng)目說(shuō)起吧。DVM是一個(gè)混合了Hypervisor(虛擬化)和Docker的開(kāi)源項(xiàng)目。你可以使用DVM在物理機(jī)上啟動(dòng)任何Docker鏡像。不同之處是,DVM沒(méi)有使用LXC,而是使用了Hypervisor (KVM, Xen, ESX),創(chuàng)建了一個(gè)VM來(lái)運(yùn)行Docker鏡像。

乍聽(tīng)起來(lái),DVM有點(diǎn)像基于VM運(yùn)行的CoreOS或者RancherOS。但實(shí)際上,DVM的虛機(jī)內(nèi)部不是一個(gè)完整操作系統(tǒng)(CoreOS雖然精簡(jiǎn),但仍然是個(gè)完整的OS)。DVM的虛機(jī)內(nèi)部只有一個(gè)Linux Kernel。而這個(gè)kernel會(huì)從物理機(jī)的硬盤(pán)上加載并運(yùn)行Docker鏡像。更重要的是:DVM創(chuàng)建VM的時(shí)候,由于這個(gè)kernel能在毫秒級(jí)完成啟動(dòng),所以使用DVM啟動(dòng)Docker鏡像的耗時(shí)跟LXC相差無(wú)幾。

而從運(yùn)行性能看,虛擬化的性能雖然有一定損失,但差距并不是太大:

CPU性能相比物理機(jī)只有0.5-2%的損失

內(nèi)存消耗比LXC多10MB

磁盤(pán)和網(wǎng)絡(luò)性能,在云環(huán)境下由于SDN和分布式存儲(chǔ)的原因,DVM也和LXC非常接近

既然DVM可以使用虛擬機(jī)直接啟動(dòng)Docker鏡像,而且性能接近Container,那么Container就不是Docker運(yùn)行的唯一選擇,因此也就不是Docker的核心。

再來(lái)看AUFS,第一次看到Docker的時(shí)候,大家都被它類(lèi)似于Git的鏡像管理流程吸引。不過(guò)仔細(xì)想想,這個(gè)功能更多的被用來(lái)實(shí)現(xiàn)增量部署更新。而從"集裝箱化"這個(gè)角度,AUFS并沒(méi)有直接的關(guān)系。作為例子,CoreOS的Rocket并未采用類(lèi)似的分層文件系統(tǒng)技術(shù)。另一方面,傳統(tǒng)虛擬機(jī)鏡像也能結(jié)合AUFS達(dá)到類(lèi)似的效果。那么為什么虛擬化廠商之前沒(méi)有想到類(lèi)似Docker的idea呢?

原因很簡(jiǎn)單,Docker的真正核心在于:

它拋棄傳統(tǒng)VM試圖模擬完整機(jī)器的思路,而是以應(yīng)用為單元進(jìn)行"集裝封箱"

這樣做的好處主要有兩個(gè):

加快啟動(dòng)速度:我們知道,為了兼容性,通用性的考慮,虛擬化廠商無(wú)法對(duì)OS進(jìn)行優(yōu)化。傳統(tǒng)VM啟動(dòng)之所以慢,很大程度是因?yàn)镺S啟動(dòng)耗時(shí)。反觀Docker,由于只考慮應(yīng)用本身,當(dāng)Docker鏡像啟動(dòng)時(shí)就可以做到心無(wú)雜念,自然也就快。

精簡(jiǎn)鏡像:從技術(shù)角度來(lái)說(shuō),AUFS也可以應(yīng)用在VM的鏡像(qcow2)。但由于VM面向的是完整的OS,其中包含了各種服務(wù),導(dǎo)致VM鏡像一般體積較大(GB),不方便交付和部署。而Docker不關(guān)心完整的OS,只包含應(yīng)用運(yùn)行所需的最小集合,因此鏡像體積只有200-300MB,大大縮短了鏡像的下載時(shí)間。

說(shuō)到這里,你可以看到"面向應(yīng)用"是Docker最核心的理念。那自然而然的問(wèn)題是:

既然Docker已經(jīng)證明我們不需要完整的OS,那我們是否還需要一個(gè)完整的Kernel?

在DVM項(xiàng)目里,我們開(kāi)發(fā)了一個(gè)HyperKernel, 它非常精簡(jiǎn),資源占用極低,不過(guò)它仍然是個(gè)通用的Linux內(nèi)核,仍然存在大量的簡(jiǎn)化,重構(gòu)的空間。我們可不可以大膽想象,HyperKernel在未來(lái)會(huì)不會(huì)進(jìn)化為一個(gè)專(zhuān)用的,極簡(jiǎn)的內(nèi)核?

于是,我們成立了一家startup,而在5.1之后DVM也即將開(kāi)源。我們希望能推動(dòng)Kernel,Hypervisor,Docker技術(shù)的發(fā)展,并打造新一代Kernel Distro,也很期待有一樣理想的“內(nèi)核er”們的加入!

作者簡(jiǎn)介

王旭:DVM創(chuàng)始人,CTO,前VisualOps CTO,多年的Debian,Kernel,分布式存儲(chǔ)老兵

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)