在基礎(chǔ)技術(shù)創(chuàng)業(yè)這個圈子里,Docker算是最火的獨角獸了。不久前Docker剛剛完成了9500萬美元的新1輪投資。要知道Docker是個純開源,完全底層Building Block的技術(shù),而且到目前為止Docker還沒有真實的商業(yè)產(chǎn)品。
那末, 究竟甚么讓Docker這么火呢?
大家都知道:
Docker = LXC + AUFS
從1方面看,Docker從誕生至今都定位于Container之上,那末Docker的核心是Container么?而從另外一方面,Docker在標(biāo)準(zhǔn)的LXC之上又融會AUFS這樣的分層鏡像管理機制,那末AUFS是Docker的核心?
話還是從我們的DVM項目說起吧。DVM是1個混合了Hypervisor(虛擬化)和Docker的開源項目。你可使用DVM在物理機上啟動任何Docker鏡像。不同的地方是,DVM沒有使用LXC,而是使用了Hypervisor (KVM, Xen, ESX),創(chuàng)建了1個VM來運行Docker鏡像。
乍聽起來,DVM有點像基于VM運行的CoreOS或RancherOS。但實際上,DVM的虛機內(nèi)部不是1個完全操作系統(tǒng)(CoreOS雖然精簡,但依然是個完全的OS)。DVM的虛機內(nèi)部只有1個Linux Kernel。而這個kernel會從物理機的硬盤上加載并運行Docker鏡像。更重要的是:DVM創(chuàng)建VM的時候,由于這個kernel能在毫秒級完成啟動,所以使用DVM啟動Docker鏡像的耗時跟LXC相差無幾。
而從運行性能看,虛擬化的性能雖然有1定損失,但差距其實不是太大:
既然DVM可使用虛擬機直接啟動Docker鏡像,而且性能接近Container,那末Container就不是Docker運行的唯1選擇,因此也就不是Docker的核心。
再來看AUFS,第1次看到Docker的時候,大家都被它類似于Git的鏡像管理流程吸引。不過仔細(xì)想一想,這個功能更多的被用來實現(xiàn)增量部署更新。而從"集裝箱化"這個角度,AUFS并沒有直接的關(guān)系。作為例子,CoreOS的Rocket并未采取類似的分層文件系統(tǒng)技術(shù)。另外一方面,傳統(tǒng)虛擬機鏡像也能結(jié)合AUFS到達類似的效果。那末為何虛擬化廠商之前沒有想到類似Docker的idea呢?
緣由很簡單,Docker的真正核心在于:
它拋棄傳統(tǒng)VM試圖摹擬完全機器的思路,而是以利用為單元進行"集裝封箱"
這樣做的好處主要有兩個:
說到這里,你可以看到"面向利用"是Docker最核心的理念。那自但是然的問題是:
既然Docker已證明我們不需要完全的OS,那我們是不是還需要1個完全的Kernel?
在DVM項目里,我們開發(fā)了1個HyperKernel, 它非常精簡,資源占用極低,不過它依然是個通用的Linux內(nèi)核,依然存在大量的簡化,重構(gòu)的空間。我們可不可以大膽想象,HyperKernel在未來會不會進化為1個專用的,極簡的內(nèi)核?
因而,我們成立了1家startup,而在5.1以后DVM也行將開源。我們希望能推動Kernel,Hypervisor,Docker技術(shù)的發(fā)展,并打造新1代Kernel Distro,也很期待有1樣理想的“內(nèi)核er”們的加入!
作者簡介
王旭:DVM開創(chuàng)人,CTO,前VisualOps CTO,多年的Debian,Kernel,散布式存儲老兵