Docker到底是什么?為什么它這么火!
譯文如果你是數(shù)據(jù)中心或云計算IT圈子的人,這一年多來應(yīng)該一直在聽到普通的容器、尤其是Docker,關(guān)于它們的新聞從未間斷過。Docker1.0在今年6月發(fā)布后,聲勢更是達到了前所未有的程度。
動靜之所以這么大,就是因為許多公司在以驚人的速度采用Docker。在今年7月的開源大會(OSCon)上,我遇到了早已將服務(wù)器應(yīng)用程序從虛擬機(VM)轉(zhuǎn)移到容器的無數(shù)企業(yè)。的確,Docker公司主管服務(wù)和支持的副總裁James Turnbull在會上告訴我,其中有三家大銀行一直在使用Docker的測試版,現(xiàn)已在生產(chǎn)環(huán)境中使用Docker。對任何早期技術(shù)來說,這無疑是極大的充滿自信的舉動,要知道它在安全至上的金融界幾乎聞所未聞。
與此同時,Docker這項開源技術(shù)不僅僅是紅帽和Canonical等Linux巨頭眼里的寵兒。微軟等專有軟件公司也在熱烈擁抱Docker。
那么,為什么大家都追捧容器和Docker呢?James Bottomley是Parallels公司的服務(wù)器虛擬化首席技術(shù)官,也是一位知名的Linux內(nèi)核開發(fā)人員。他向我解釋,Hyper-V、KVM和Xen等虛擬機管理程序都“基于虛擬化硬件仿真機制。這意味著,它們對系統(tǒng)要求很高。”
然而,容器卻使用共享的操作系統(tǒng)。這意味著它們在使用系統(tǒng)資源方面比虛擬機管理程序要高效得多。容器不是對硬件進行虛擬化處理,而是駐留在單單一個Linux實例上。這反過來意味著,你可以“丟棄沒有用的99.9%的虛擬機垃圾,剩下一個小巧簡潔的膠囊式容器,里面含有你的應(yīng)用程序,”Bottomley如是說。
據(jù)Bottomley聲稱,因此,借助經(jīng)過全面調(diào)優(yōu)的容器系統(tǒng),你就可以在同一硬件上擁有數(shù)量比使用Xen虛擬機或KVM虛擬機多出四到六倍的服務(wù)器應(yīng)用實例。
是不是覺得聽起來很不錯?畢竟,你可以讓服務(wù)器運行多得多的應(yīng)用程序。那么,為什么之前沒有人做過呢?實際上,之前有人做過。容器其實是個舊概念。
容器可以追溯到至少2000年和FreeBSD Jails。甲骨文Solaris也有一個類似概念,名為Zones;Parallels、谷歌和Docker等公司一直在致力于研發(fā)諸如OpenVZ和LXC(Linux容器)之類的開源項目,旨在讓容器運行起來順暢又安全。
的確,很少有人知道容器,但大多數(shù)人多年來一直在使用容器。谷歌就有自己的開源容器技術(shù)lmctfy(Let Me Contain That For You,意為“讓我容納你的程序”)。只要你使用谷歌的某項功能:比如搜索、Gmail、Google Docks或無論其他什么,就分配了一個新的容器。
然而,Docker建立在LXC的基礎(chǔ)上。與任何容器技術(shù)一樣,就該程序而言,它有自己的文件系統(tǒng)、存儲系統(tǒng)、處理器和內(nèi)存等部件。容器與虛擬機之間的區(qū)別主要在于,虛擬機管理程序?qū)φ麄€設(shè)備進行抽象處理,而容器只是對操作系統(tǒng)內(nèi)核進行抽象處理。
這反過來意味著:虛擬機管理程序能做容器做不了的一件事就是,使用不同的操作系統(tǒng)或內(nèi)核。所以,舉例說,你可以使用微軟Azure,同時運行Windows Server2012的實例和SUSE Linux企業(yè)級服務(wù)器的實例。至于Docker,所有容器都必須使用同樣的操作系統(tǒng)和內(nèi)核。
另一方面,如果你只是想讓盡可能多的服務(wù)器應(yīng)用實例在盡可能少的硬件上運行,可能不大關(guān)心運行多個操作系統(tǒng)虛擬機。要是同一應(yīng)用程序的多個副本正是你需要的,那么你會喜歡上容器。
改用Docker這一舉措有望每年為數(shù)據(jù)中心或云計算服務(wù)提供商節(jié)省數(shù)千萬美元的電力和硬件成本。所以難怪它們在一窩蜂地盡快采用Docker。
Docker帶來了之前技術(shù)所沒有的幾個新特點。第一是,與之前的方法相比,Docker讓容器部署和使用起來更容易、更安全。此外,由于Docker與其他容器領(lǐng)域的巨擘進行了合作,包括Canonical、谷歌、紅帽和Parallels,共同開發(fā)其關(guān)鍵的開源組件libcontainer,它為容器帶來了迫切需要的標(biāo)準(zhǔn)化。
與此同時,廣大開發(fā)人員可以使用Docker封裝、交付和運行任何應(yīng)用程序,應(yīng)用程序成為輕型的、可移植的、自給自足的LXC容器,可以在任何地方運行。正如Bottomley告訴我,“容器讓你立即享有應(yīng)用程序可移植性。”
市場研究公司451 Research的資深分析師Jay Lyman補充道:“企業(yè)組織力求以一種高效、標(biāo)準(zhǔn)化、可重復(fù)的方式,讓應(yīng)用程序和工作負載更易于移植和分發(fā),而有時很難做到這點。正如GitHub通過共享源代碼來促進合作和創(chuàng)新那樣,Docker Hub、Official Repos和商業(yè)支持也在幫助眾多企業(yè)通過改進封裝、部署和管理應(yīng)用程序的方式,應(yīng)對這個難題。”
最后但并非最不重要的,Docker容器易于部署到云端。正如Ben Lloyd Pearson在opensource.com上寫道:“Docker采用了一種特別的方式,以便可以整合到大多數(shù)DevOps(開發(fā)運營)應(yīng)用程序當(dāng)中,包括Puppet、Chef、Vagrant和Ansible,或者可以獨自使用,以管理開發(fā)環(huán)境。主要賣點是,它簡化了通常由另外這些應(yīng)用程序執(zhí)行的好多任務(wù)。具體來說,有了Docker,人們就可以搭建與活動服務(wù)器一模一樣的本地開發(fā)環(huán)境,從同一個主機運行多個開發(fā)環(huán)境(每個開發(fā)環(huán)境有獨特的軟件、操作系統(tǒng)和配置),在新的或不同的服務(wù)器上測試項目,以及讓任何人都可以在設(shè)置一模一樣的情況下處理同一項目,無論本地主機環(huán)境怎樣。”
簡而言之,Docker能為你做的事情就是:相比其他技術(shù),它能讓更多數(shù)量的應(yīng)用程序在同一硬件上運行;它讓開發(fā)人員易于快速構(gòu)建可隨時運行的容器化應(yīng)用程序;它大大簡化了管理和部署應(yīng)用程序的任務(wù)??偠灾?,我能理解作為一項企業(yè)級技術(shù),Docker為何一下子躥紅。我只是希望它不負眾望,否則外頭會有一些憂心忡忡的CEO和CIO。
英文:http://www.zdnet.com/what-is-docker-and-why-is-it-so-darn-popular-7000032269/