2014年云計算市場中最火熱的莫過于docker了,OpenStack項目從默默無聞到全球矚目用了3年多時間,而Docker的成功只用了15個月。
在給不同的人介紹了Docker以后,我發(fā)現(xiàn)一個很有趣的現(xiàn)象,一些驚呼“這就是我要的!”,而一些學員聽完以后并不能完全理解docker的好處,其中被問及最多的一個問題是“Docker和虛擬機有什么區(qū)別?”。
Docker解決的問題其實和虛擬機并不完全相同。在以虛擬機為基礎的云服務模式中,虛擬機做為IT基礎設施提供給用戶,用戶拿到虛擬機的訪問方式以后再在上面構建自己的應用環(huán)境,然后部署應用,這就好像造完房子以后,把一個空房間交給了買房的人。這是一種完全自下而上的IT基礎設施供給行為,但從一個空房到可以給人入住,我們還有很多事情要做,要采購家具,購置生活用品,布置房間,讓一切符合我們的生活習慣。因此,在我們向往的美好生活和一個空房間之間還有相當大的鴻溝,這個鴻溝也體現(xiàn)在IT應用與IT基礎設施之間。尤其在如今對應用提出了快速開發(fā),快速迭代,快速部署等要求以后,如何保證應用環(huán)境的穩(wěn)定,一致和便捷就更讓人感覺頭痛了。
為了解決這個問題,出現(xiàn)了PaaS:裝修房。裝修房解決了快速入住的問題,用標準化的軟件組件來裝修你的虛擬機,這樣,你入住的虛擬機的時候就不需要從頭開始安裝各種需要的軟件了,拎包入住。但現(xiàn)有的PaaS模式并沒有完全解決應用部署的問題,當應用需要用到標準組件的時候,使用PaaS服務是個非常好的選擇,可是應用是相當靈活的,每個應用的不同之處在于它的代碼,它的架構,這些都是應用獨有而PaaS無法觸及的。
Docker通過新的思路,解決了應用部署的問題。想象一下Docker就是一個集裝箱,你所有的生活設施,家具,布置,私人物品都在這個集裝箱內(nèi)。搬家的時候,你把這個集裝箱從一個地方搬到另外一個地方,你所有的物品,擺設,家具都原封不動,只是從一個地方移到了另外一個地方,或者只是這個集裝箱的空間和容量變大了,其他一切都沒變化。
開發(fā)人員是最樂見于Docker的這種應用部署模式,因為應用的生命周期起始于開發(fā)人員的開發(fā)系統(tǒng),經(jīng)過開發(fā),測試,壓力測試,等過程,最終應用被發(fā)布到生產(chǎn)系統(tǒng),并可能在不同的生產(chǎn)系統(tǒng)中遷移。應用開發(fā)人員對此都會有切身的體會,任何微小的運行環(huán)境的錯誤都會導致應用出現(xiàn)問題,尤其在講究快速敏捷的今天,應用模塊,新的代碼,新的配置,被快速的加入應用的環(huán)境中,可能還沒等寫入到文檔,新特性就已經(jīng)被推送到生產(chǎn)上了。
如果在應用的生命周期中可以保證應用的運行環(huán)境一直被封裝在一個固定的容器中,對于開發(fā)人員來說,這才是真正的快速,不再需要為應用的運行環(huán)境再操心,可以更加專注于應用本身,因為應用的整個生命周期都被封裝在同一個運行環(huán)境(容器)中。
這就是Docker,虛擬機的做法是“到一個地方就部署一次應用“,而Docker的做法是“應用與它的運行環(huán)境始終封裝在一起,到哪里都是應用帶著運行環(huán)境一起”。
細心的讀者會說,虛擬機的方式,也可以做到這種“帶著運行環(huán)境一起”的方式,無非就是把虛擬機的鏡像整體導出,再倒入到新的環(huán)境中,對,區(qū)別是虛擬機鏡像在帶著應用運行環(huán)境的同時還帶著操作系統(tǒng)的鏡像,與只攜帶必要的應用運行環(huán)境的Docker方式相比較,虛擬機的鏡像就顯得太重,太大,不靈活。
當然Docker與虛擬機比還會有些別的好處,比如,從資源利用的角度來說,通過虛擬機封裝的應用是個完整的操作系統(tǒng)和虛擬主機,而 Docker封裝的只是應用使用到的進程,因此相比虛擬機的方式,Docker的封裝方式少了虛擬操作系統(tǒng)和虛擬機兩個對應用運行并無太大作用的層次。因此主機整體的資源利用率會因此大大提高。
Docker的容器模式剛剛起步,還有很多不足的地方,在軟件成熟度上也還未被企業(yè)關鍵應用所接受,但最為云計算技術中的一個新方向,它為在云環(huán)境中快速部署和遷移應用提供了全新的解決方案。
這就是神奇的Docker,一個輕量級的容器。