Xen項(xiàng)目負(fù)責(zé)人:Docker會(huì)取代虛擬機(jī)嗎?
原創(chuàng)?2015-08-21?吳佳興Docker?Docker無(wú)疑是當(dāng)下最具影響力的開(kāi)源項(xiàng)目。Docker何以如此的成功?它會(huì)否取代虛擬機(jī),這樣的轉(zhuǎn)變是不是會(huì)在將來(lái)某一天的某一個(gè)臨界點(diǎn)突然爆發(fā)?如果是的話(huà),那會(huì)是什么時(shí)候?為了解答這些問(wèn)題,讓我們先來(lái)簡(jiǎn)單的回顧一下過(guò)去的發(fā)展歷程吧,這樣也許能夠促使我們更好的了解目前的情況并展望未來(lái)。虛擬機(jī)技術(shù)的發(fā)展和普及在虛擬機(jī)技術(shù)普及之前,系統(tǒng)管理員們習(xí)慣于上線物理服務(wù)器來(lái)為他們的用戶(hù)提供服務(wù)。這個(gè)過(guò)程很繁瑣,無(wú)法實(shí)現(xiàn)完全的自動(dòng)化,并且需要花費(fèi)幾個(gè)小時(shí)甚至幾天。如果出問(wèn)題了,他們只能跑到機(jī)房去更換物理元件。伴隨著虛擬機(jī)的出現(xiàn),DevOps人員可以在他們所有的物理服務(wù)器上任意的安裝Hypervisor,然后他們便可以在用戶(hù)提出申請(qǐng)時(shí)直接分配新的虛擬機(jī)。上線一臺(tái)虛擬機(jī)不再需要幾個(gè)小時(shí),而僅僅只需要幾分鐘就夠了,而且可以自動(dòng)化完成。底層硬件的差異越來(lái)越少,而更多的是變得商務(wù)化。如果某個(gè)用戶(hù)需要更多額外的資源,創(chuàng)建一個(gè)新的虛擬機(jī)就行了。如果一個(gè)物理主機(jī)出現(xiàn)了故障,管理員只需要將該宿主機(jī)承載的虛擬機(jī)遷移或恢復(fù)到另外的宿主機(jī)即可。更細(xì)致的部署模式變得可行和易于操作。用戶(hù)不再需要把他們所有的程序都運(yùn)行在同一臺(tái)主機(jī)上,通過(guò)使用虛擬機(jī),他們可以將底層硬件的功用發(fā)揮到淋漓盡致。人們可以在一個(gè)虛擬機(jī)上跑數(shù)據(jù)庫(kù),在另外一個(gè)上面運(yùn)行中間件,然后在第三個(gè)上面跑Web,而完全不用擔(dān)心硬件資源利用率的問(wèn)題。在同一家企業(yè)里,一群人負(fù)責(zé)購(gòu)買(mǎi)服務(wù)器物理硬件,而另外一群人負(fù)責(zé)軟件棧的架設(shè),他們的職能劃分相對(duì)獨(dú)立并且互不干涉。連接兩個(gè)團(tuán)隊(duì)的橋梁便是虛擬機(jī)。解決方案架構(gòu)師們可以方便廉價(jià)的將每個(gè)應(yīng)用部署到不同的虛擬機(jī)上,而極大的減少了他們的運(yùn)維成本。正因?yàn)槿绱耍浖こ處焸円餐瑯酉矏?ài)它。這也正是Hypervisor技術(shù)所帶來(lái)的最大的創(chuàng)新。幾年過(guò)去了,人們已經(jīng)習(xí)慣于通過(guò)虛擬機(jī)來(lái)承載他們的業(yè)務(wù)。初創(chuàng)公司甚至于不再傾向于購(gòu)買(mǎi)服務(wù)器硬件資源了,他們只需要購(gòu)買(mǎi)亞馬遜的AWS服務(wù)即可。如今,每個(gè)應(yīng)用一臺(tái)虛擬機(jī)已經(jīng)成為了部署軟件棧的標(biāo)準(zhǔn)方式。自上世紀(jì)90年代以來(lái),應(yīng)用程序的部署方式其實(shí)并沒(méi)有大的變動(dòng)。從那時(shí)候開(kāi)始,如果我們需要部署一個(gè)應(yīng)用,那便需要安裝一個(gè)Linux發(fā)行版本,而構(gòu)建的主要意義在于驅(qū)動(dòng)硬件設(shè)備,然后我們需要安裝應(yīng)用所需要的Deb或者RPM包,最后才安裝和配置我們真正想要運(yùn)行的那個(gè)應(yīng)用。顛覆者Docker直到2013年,Docker提出了一個(gè)簡(jiǎn)單而有效的工具來(lái)創(chuàng)建、分發(fā)和部署應(yīng)用程序,它們以一種很贊的方式運(yùn)行在相對(duì)獨(dú)立的Linux容器里。另外,針對(duì)眾多的應(yīng)用而言,它提出了一個(gè)registry的概念,這有點(diǎn)像蘋(píng)果的App Store,這里為了清晰起見(jiàn),我將其稱(chēng)之為“云應(yīng)用”。部署 Nginx Web 服務(wù)器就變成了類(lèi)似docker pull nginx這樣簡(jiǎn)單。這比安裝一個(gè)最新版的Ubuntu LTS可簡(jiǎn)單快捷多了。Docker云應(yīng)用都是預(yù)配置的并且不再需要安裝一些Linux發(fā)行版附帶的無(wú)用的軟件包。事實(shí)上,Nginx Docker云應(yīng)用是由Nginx社區(qū)直接提供和分發(fā)的,而并非是Canonical或紅帽。Docker最突出的創(chuàng)新之處在于引入了一整套包括Registry在內(nèi)的云應(yīng)用標(biāo)準(zhǔn)規(guī)范。它不再是使用虛擬機(jī)的方式來(lái)運(yùn)行云應(yīng)用,取而代之的是利用Linux容器。容器技術(shù)實(shí)際上在多年前就已經(jīng)出現(xiàn),但是一直以來(lái)只是在有限的幾個(gè)圈子里傳播,并沒(méi)有被大眾廣泛接受。盡管他們提供了非常好的性能體驗(yàn),但是較之虛擬機(jī)而言,他們提供的功能實(shí)在有限,并且隔離性方面很弱。作為一個(gè)后起之秀,Docker讓Linux容器重?zé)ㄐ律欢鳧ocker之所以成功不能完全歸功于容器。這只是一個(gè)偶然罷了。Docker等容器技術(shù)的問(wèn)題那么,容器技術(shù)本身到底存在些什么問(wèn)題呢? 首先,它們對(duì)熱遷移技術(shù)的支持還不是很好,而且它們不能運(yùn)行在非原生的工作棧上(例如,在Linux上運(yùn)行Windows或者是在Windows在運(yùn)行Linux)。更進(jìn)一步來(lái)說(shuō),容器技術(shù)最主要的挑戰(zhàn)在于安全性:相對(duì)于虛擬機(jī)而言,它存在更多的潛在風(fēng)險(xiǎn)。實(shí)際上,在容器圈子里,無(wú)論是Docker,CoreOS還是其他任何人,都不太建議部署多租戶(hù)容器。在虛擬機(jī)的時(shí)代,你不必關(guān)心誰(shuí)將會(huì)去使用它,又或者是它會(huì)被如何利用。而就容器技術(shù)來(lái)說(shuō),在同一臺(tái)宿主機(jī)上不太建議運(yùn)行歸屬于多個(gè)不同用戶(hù)的容器。亞馬遜和谷歌都提供了容器托管服務(wù),但是基于隔離性和安全性方面的考慮,他們都是將每個(gè)容器運(yùn)行在對(duì)應(yīng)的一個(gè)單獨(dú)的虛擬機(jī)之上。這種方式可能看起來(lái)不是那么的高效,但是的確非常簡(jiǎn)單實(shí)用。新的拐點(diǎn)?人們也開(kāi)始逐漸意識(shí)到這一點(diǎn)(譯者注:Docker和虛擬機(jī)結(jié)合的這一個(gè)點(diǎn))。在今年年初高調(diào)發(fā)起的一些項(xiàng)目正是嘗試將虛擬機(jī)的一些優(yōu)點(diǎn)融入到Docker當(dāng)中,其中最具代表性的當(dāng)屬I(mǎi)ntel的Clear Linux項(xiàng)目和Hyper。他們均是直接使用傳統(tǒng)的虛擬機(jī)來(lái)運(yùn)行Docker云應(yīng)用(沒(méi)有Linux容器參與)。我們?cè)?jīng)做過(guò)一些Xen的測(cè)試:針對(duì)這類(lèi)用例,我們通過(guò)調(diào)優(yōu)Hypervisor,最終結(jié)果是得到了一個(gè)和Linux容器相同的啟動(dòng)時(shí)間,而其它所有的功能特性仍然得以保留。Intel為Xen做出的類(lèi)似的努力和嘗試也將會(huì)在Xen開(kāi)發(fā)者峰會(huì)上展示,而屆時(shí)Hyper也將秀出他們的一些工作成果。新的方向似乎可以給我們的用戶(hù)提供一個(gè)兩全其美的方案:Docker的便利性和虛擬機(jī)的安全性的完美結(jié)合。在可以預(yù)見(jiàn)的未來(lái),Docker也許不會(huì)和虛擬機(jī)產(chǎn)生任何的競(jìng)爭(zhēng)關(guān)系,取而代之的是,它將會(huì)成為其眾多承載對(duì)象的其中之一。DockOneDockOne,新圈子,新思路,新視野。?Read more
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。