? ? ? ?容器虛擬化技術(shù)已經(jīng)成為一種被大家廣泛認(rèn)可的服務(wù)器資源共享方式,容器技術(shù)可以在按需構(gòu)建操作系統(tǒng)運(yùn)行實(shí)例的過(guò)程當(dāng)中為系統(tǒng)管理員提供極大的靈活性缔俄。由于Hypervisor虛擬化技術(shù)仍然存在一些性能和資源使用效率方面的問(wèn)題(例如虛擬化之后CPU性能下降明顯锋谐,虛擬資源啟動(dòng)較慢等)紧卒,因此出現(xiàn)了一種稱(chēng)為容器技術(shù)(Container)的新型虛擬化技術(shù)來(lái)幫助解決這些問(wèn)題蔬啡。
? ? ? ?起初,大家普遍認(rèn)為基于Hypervisor的方式可以在最大程度上提供靈活性诵肛。所有虛擬機(jī)實(shí)例都能夠運(yùn)行任何其所支持的操作系統(tǒng)屹培,而不受其他實(shí)例的影響默穴。然而,現(xiàn)在越來(lái)越多的用戶(hù)發(fā)現(xiàn)Hypervisor提供這樣一種廣泛支持的特性其實(shí)是在給自己制造麻煩褪秀。對(duì)于Hypervisor環(huán)境來(lái)說(shuō)蓄诽,每個(gè)虛擬機(jī)實(shí)例都需要運(yùn)行客戶(hù)端操作系統(tǒng)的完整副本以及其中包含的大量應(yīng)用程序。從實(shí)際運(yùn)行的角度來(lái)說(shuō)媒吗,由此產(chǎn)生的沉重負(fù)載將會(huì)影響其工作效率及性能表現(xiàn)仑氛。
首先,每種操作系統(tǒng)和應(yīng)用程序堆棧都需要使用DRAM闸英。對(duì)于多個(gè)運(yùn)行簡(jiǎn)單應(yīng)用程序的小型虛擬機(jī)實(shí)例來(lái)說(shuō)锯岖,這種方式可能產(chǎn)生很大的系統(tǒng)開(kāi)銷(xiāo),降低性能表現(xiàn)甫何。加載并卸載這些堆棧鏡像需要花費(fèi)很長(zhǎng)時(shí)間出吹,并且還會(huì)增加服務(wù)器的網(wǎng)絡(luò)連接數(shù)量。對(duì)于極端情況來(lái)說(shuō)辙喂,如果用戶(hù)在上午9點(diǎn)同時(shí)啟動(dòng)上千臺(tái)虛擬桌面捶牢,還有可能導(dǎo)致網(wǎng)絡(luò)風(fēng)暴的發(fā)生。
部署虛擬服務(wù)器的目的之一在于快速創(chuàng)建新的虛擬機(jī)實(shí)例加派。然而從網(wǎng)絡(luò)存儲(chǔ)當(dāng)中復(fù)制鏡像(Image)需要花費(fèi)大量時(shí)間叫确,這些操作會(huì)延長(zhǎng)啟動(dòng)過(guò)程跳芳,無(wú)疑會(huì)限制系統(tǒng)靈活性芍锦。
因此我們可以選擇使用容器技術(shù)。只需要通過(guò)簡(jiǎn)單的觀察我們便能夠發(fā)現(xiàn)容器技術(shù)的出現(xiàn)是為了解決多操作系統(tǒng)/應(yīng)用程序堆棧的問(wèn)題:
1. 在單臺(tái)服務(wù)器當(dāng)中為所有VM使用相同的操作系統(tǒng)對(duì)于大部分?jǐn)?shù)據(jù)中心來(lái)說(shuō)都不算是真正的限制飞盆,編排管理(Orchestration)可以輕松處理這種變化娄琉;
2. 許多應(yīng)用程序堆棧都是相同的(如LAMP);
3. 對(duì)于大規(guī)模集群來(lái)說(shuō)吓歇,在本地硬盤(pán)當(dāng)中孽水,存儲(chǔ)操作系統(tǒng)副本將會(huì)使得更新過(guò)程變得更為復(fù)雜。最為重要的是城看,容器技術(shù)可以同時(shí)將操作系統(tǒng)鏡像和應(yīng)用程序加載到內(nèi)存當(dāng)中女气。還可以從網(wǎng)絡(luò)磁盤(pán)進(jìn)行加載,因?yàn)橥瑫r(shí)啟動(dòng)幾十臺(tái)容器鏡像不會(huì)對(duì)網(wǎng)絡(luò)和存儲(chǔ)帶來(lái)很大負(fù)載测柠。
容器技術(shù)能夠在同一臺(tái)服務(wù)器上創(chuàng)建相比于之前兩倍的虛擬機(jī)實(shí)例數(shù)量炼鞠,因此無(wú)疑將會(huì)降低系統(tǒng)總投入。但是必須認(rèn)真進(jìn)行規(guī)劃轰胁,因?yàn)殡p倍的實(shí)例數(shù)量同樣意味著對(duì)于運(yùn)行這些實(shí)例的服務(wù)器帶來(lái)了雙倍的I/O負(fù)載谒主。
我們需要了解除了避免可能發(fā)生的啟動(dòng)風(fēng)暴之外,容器技術(shù)是否還有任何其他性能方面的優(yōu)勢(shì)赃阀。能否改進(jìn)IOPS霎肯?能夠提升網(wǎng)絡(luò)連接效率并且降低容器間的延遲,解決伴隨實(shí)例數(shù)量增加而產(chǎn)生的問(wèn)題?
? ? ? ?美國(guó)某傳統(tǒng)服務(wù)器大廠商的某實(shí)驗(yàn)室完成了至今為止大部分權(quán)威實(shí)驗(yàn)观游,其研究結(jié)果表明容器技術(shù)相比于Hypervisor搂捧,容器技術(shù)的許多關(guān)鍵指標(biāo)都有重大改進(jìn)。在進(jìn)行的所有測(cè)試當(dāng)中懂缕,容器技術(shù)幾乎擁有和本地平臺(tái)一樣的運(yùn)行速度异旧。
上述廠商的研究表明容器技術(shù)在多個(gè)領(lǐng)域當(dāng)中都比Hypervisor擁有更好的性能表現(xiàn)。容器技術(shù)的運(yùn)行速度幾乎是Hypervisor的兩倍提佣,在評(píng)分當(dāng)中非常接近于本地操作系統(tǒng)吮蛹。在和KVM的對(duì)比當(dāng)中,容器技術(shù)在硬盤(pán)隨機(jī)讀取(84,000 vs 48,000 IOPS)和寫(xiě)入(110,000 vs 60,000 IOPS )方面擁有非常優(yōu)秀的表現(xiàn)拌屏,如果使用本地固態(tài)硬盤(pán)可以實(shí)現(xiàn)更好的SQL性能表現(xiàn)潮针。
? ? ? ?高性能計(jì)算(HPC)社區(qū)也在轉(zhuǎn)而使用虛擬化和容器技術(shù)。一項(xiàng)由巴西天主教大學(xué)進(jìn)行的研究已經(jīng)取得了一定成果:
“如果可以降低基本的系統(tǒng)開(kāi)銷(xiāo)(比如CPU倚喂、內(nèi)存每篷、硬盤(pán)和網(wǎng)絡(luò)),那么HPC無(wú)疑會(huì)選擇使用虛擬化系統(tǒng)端圈,”研究人員表示焦读。“從這個(gè)角度來(lái)說(shuō)舱权,我們發(fā)現(xiàn)所有基于容器的系統(tǒng)在CPU矗晃、內(nèi)存、硬盤(pán)和網(wǎng)絡(luò)方面都擁有接近于本地操作系統(tǒng)的性能表現(xiàn)宴倍≌胖ⅲ”
? ? ? ?美國(guó)某虛擬化公司V***re也針對(duì)容器技術(shù)進(jìn)行了一系列評(píng)測(cè)對(duì)比。容器技術(shù)研究結(jié)果印證了容器技術(shù)擁有接近本地系統(tǒng)的性能表現(xiàn)鸵贬,盡管其并沒(méi)有像IBM實(shí)驗(yàn)室那樣針對(duì)VMware的Hypervisor發(fā)布非常詳細(xì)的測(cè)試報(bào)告俗他。而這項(xiàng)報(bào)告的容器技術(shù)結(jié)果有可能促使VMware做出調(diào)整,以降低Hypervisor的系統(tǒng)開(kāi)銷(xiāo)阔逼,但VMware的報(bào)告當(dāng)中沒(méi)有提及硬盤(pán)I/O問(wèn)題兆衅。
為了擴(kuò)展適用范圍,容器技術(shù)仍然需要在安全方面不斷改進(jìn)嗜浮。但是現(xiàn)在羡亩,我們可以看到的是這種方式可以解決Hypervisor虛擬化當(dāng)中的大多數(shù)性能問(wèn)題。再加上更加輕松和快捷的部署方式周伦,容器技術(shù)將會(huì)在不久的將來(lái)占據(jù)虛擬化市場(chǎng)
? ? ? ?綜合對(duì)比 容器 vs 虛擬機(jī)
要點(diǎn)1:容器比虛擬機(jī)更敏捷
要點(diǎn)2:容器可以支持混合和多云的部署
要點(diǎn)3:將容器與現(xiàn)有IT流程集成更加容易
目前夕春,大多數(shù)企業(yè)組織都具備一個(gè)成熟的虛擬化環(huán)境,包括圍繞備份专挪、監(jiān)控和自動(dòng)化運(yùn)行的工具及志,以及圍繞它構(gòu)建的人員和IT流程片排。通過(guò)在虛擬化基礎(chǔ)設(shè)施上運(yùn)行Docker EE(企業(yè)版),組織可以輕松地將容器集成到現(xiàn)有實(shí)踐中速侈,并獲得要點(diǎn)1和要點(diǎn)2的優(yōu)勢(shì)率寡。
要點(diǎn)4:容器減少硬件成本
容器化應(yīng)用共享通用OS和軟件庫(kù),極大地提高了VM中的CPU利用率倚搬。這意味著可以減少運(yùn)行環(huán)境中所需要的虛機(jī)總數(shù)冶共,并增加可在服務(wù)器上運(yùn)行的應(yīng)用程序數(shù)量。Docker EE可以使服務(wù)器整合度增加50%每界,這意味著硬件成本大大減少捅僵。
而容器的運(yùn)行平臺(tái)可以是虛擬機(jī)、裸機(jī)或者其他任何公有云平臺(tái)眨层。
? ? ? Docker容器與鏡像概念
在2016年的DockerCon大會(huì)上庙楚,Docker再次推翻了之前PaaS層定義,樹(shù)立了一個(gè)自己的新標(biāo)準(zhǔn):Serverless無(wú)服務(wù)器架構(gòu)趴樱。同時(shí)馒闷,Docker的鏡像概念已經(jīng)成為很多依托Docker技術(shù)成立的云企業(yè)的賣(mài)點(diǎn)。
Docker鏡像可以應(yīng)用程序和它的應(yīng)用環(huán)境一起打包叁征,形成一個(gè)"集裝箱"纳账,放入倉(cāng)庫(kù)。然后這個(gè)集裝箱隨時(shí)下載捺疼、解壓疏虫、應(yīng)用,減輕了開(kāi)發(fā)者的負(fù)擔(dān)帅涂,不但迅速還能夠保證一致性议薪。
? ? ? ?敏捷性:當(dāng)敏捷開(kāi)發(fā)尤蛮、微服務(wù)等概念逐漸深入媳友,輕量化已經(jīng)成為一種新風(fēng)向。Docker可以直接建立在操作系統(tǒng)上的方式在啟動(dòng)方式产捞,讓秒級(jí)啟動(dòng)成為新常態(tài)醇锚,獲得很多企業(yè)的認(rèn)可。而模塊化讓擴(kuò)展和遷移都更迅速坯临、可靠焊唬,Docker允許我們輕松將應(yīng)用程序的功能拆分成多個(gè)獨(dú)立容器,讓Docker輕量化特點(diǎn)進(jìn)一步凸顯看靠。
? ? ? ?安全性:與真實(shí)的物理機(jī)相比赶促,虛擬機(jī)因?yàn)镠ypervisor層的存在,讓小白用戶(hù)也可以對(duì)虛擬機(jī)進(jìn)行任何操作挟炬,無(wú)須擔(dān)心對(duì)機(jī)器本身造成任何損害鸥滨。對(duì)于企業(yè)而言嗦哆,虛擬機(jī)經(jīng)過(guò)四十余年的發(fā)展已經(jīng)成為一種成熟的IT技術(shù),在隔離性婿滓、安全性上老速,虛擬機(jī)也顯得更為無(wú)可挑剔,相比之下凸主,虛擬機(jī)也更為安全橘券。而Docker目前備受詬病的一個(gè)點(diǎn)就是:隔離性和安全性。
? ? ? ? 從實(shí)現(xiàn)原理上講卿吐,Docker有著比虛擬機(jī)更少的抽象層旁舰,不需要硬件資源池化,不需要Guest OS嗡官。與容器相比鬓梅,虛擬層為用戶(hù)提供了一個(gè)完整的虛擬機(jī):包括內(nèi)核在內(nèi)的一個(gè)完整的系統(tǒng)鏡像,虛擬層可以為每個(gè)用戶(hù)分配虛擬化后的CPU谨湘、內(nèi)存和IO設(shè)備資源绽快,為用戶(hù)提供一個(gè)隔離性更強(qiáng)的系統(tǒng)環(huán)境。
結(jié)束語(yǔ)
? ? ? ? Docker或者說(shuō)容器技術(shù)和虛擬機(jī)并非簡(jiǎn)單的取舍關(guān)系紧阔,如果你希望一個(gè)完全隔離的和資源有保障的環(huán)境坊罢,那么虛擬機(jī)是你的不二選擇;如果你只希望進(jìn)程之間相互隔離,同時(shí)擁有輕量化的屬性擅耽,那么Linux容器技術(shù)或者Docker活孩,才是更好的選擇。