? ? ? ?容器虛擬化技術(shù)已經(jīng)成為一種被大家廣泛認可的服務(wù)器資源共享方式,容器技術(shù)可以在按需構(gòu)建操作系統(tǒng)運行實例的過程當中為系統(tǒng)管理員提供極大的靈活性。由于Hypervisor虛擬化技術(shù)仍然存在一些性能和資源使用效率方面的問題(例如虛擬化之后CPU性能下降明顯,虛擬資源啟動較慢等),因此出現(xiàn)了一種稱為容器技術(shù)(Container)的新型虛擬化技術(shù)來幫助解決這些問題。
? ? ? ?起初,大家普遍認為基于Hypervisor的方式可以在最大程度上提供靈活性。所有虛擬機實例都能夠運行任何其所支持的操作系統(tǒng),而不受其他實例的影響。然而,現(xiàn)在越來越多的用戶發(fā)現(xiàn)Hypervisor提供這樣一種廣泛支持的特性其實是在給自己制造麻煩。對于Hypervisor環(huán)境來說,每個虛擬機實例都需要運行客戶端操作系統(tǒng)的完整副本以及其中包含的大量應(yīng)用程序。從實際運行的角度來說,由此產(chǎn)生的沉重負載將會影響其工作效率及性能表現(xiàn)。
首先,每種操作系統(tǒng)和應(yīng)用程序堆棧都需要使用DRAM。對于多個運行簡單應(yīng)用程序的小型虛擬機實例來說,這種方式可能產(chǎn)生很大的系統(tǒng)開銷,降低性能表現(xiàn)。加載并卸載這些堆棧鏡像需要花費很長時間,并且還會增加服務(wù)器的網(wǎng)絡(luò)連接數(shù)量。對于極端情況來說,如果用戶在上午9點同時啟動上千臺虛擬桌面,還有可能導致網(wǎng)絡(luò)風暴的發(fā)生。
部署虛擬服務(wù)器的目的之一在于快速創(chuàng)建新的虛擬機實例。然而從網(wǎng)絡(luò)存儲當中復制鏡像(Image)需要花費大量時間,這些操作會延長啟動過程,無疑會限制系統(tǒng)靈活性。
因此我們可以選擇使用容器技術(shù)。只需要通過簡單的觀察我們便能夠發(fā)現(xiàn)容器技術(shù)的出現(xiàn)是為了解決多操作系統(tǒng)/應(yīng)用程序堆棧的問題:
1. 在單臺服務(wù)器當中為所有VM使用相同的操作系統(tǒng)對于大部分數(shù)據(jù)中心來說都不算是真正的限制,編排管理(Orchestration)可以輕松處理這種變化;
2. 許多應(yīng)用程序堆棧都是相同的(如LAMP);
3. 對于大規(guī)模集群來說,在本地硬盤當中,存儲操作系統(tǒng)副本將會使得更新過程變得更為復雜。最為重要的是,容器技術(shù)可以同時將操作系統(tǒng)鏡像和應(yīng)用程序加載到內(nèi)存當中。還可以從網(wǎng)絡(luò)磁盤進行加載,因為同時啟動幾十臺容器鏡像不會對網(wǎng)絡(luò)和存儲帶來很大負載。
容器技術(shù)能夠在同一臺服務(wù)器上創(chuàng)建相比于之前兩倍的虛擬機實例數(shù)量,因此無疑將會降低系統(tǒng)總投入。但是必須認真進行規(guī)劃,因為雙倍的實例數(shù)量同樣意味著對于運行這些實例的服務(wù)器帶來了雙倍的I/O負載。
我們需要了解除了避免可能發(fā)生的啟動風暴之外,容器技術(shù)是否還有任何其他性能方面的優(yōu)勢。能否改進IOPS?能夠提升網(wǎng)絡(luò)連接效率并且降低容器間的延遲,解決伴隨實例數(shù)量增加而產(chǎn)生的問題?
? ? ? ?美國某傳統(tǒng)服務(wù)器大廠商的某實驗室完成了至今為止大部分權(quán)威實驗,其研究結(jié)果表明容器技術(shù)相比于Hypervisor,容器技術(shù)的許多關(guān)鍵指標都有重大改進。在進行的所有測試當中,容器技術(shù)幾乎擁有和本地平臺一樣的運行速度。
上述廠商的研究表明容器技術(shù)在多個領(lǐng)域當中都比Hypervisor擁有更好的性能表現(xiàn)。容器技術(shù)的運行速度幾乎是Hypervisor的兩倍,在評分當中非常接近于本地操作系統(tǒng)。在和KVM的對比當中,容器技術(shù)在硬盤隨機讀取(84,000 vs 48,000 IOPS)和寫入(110,000 vs 60,000 IOPS )方面擁有非常優(yōu)秀的表現(xiàn),如果使用本地固態(tài)硬盤可以實現(xiàn)更好的SQL性能表現(xiàn)。
? ? ? ?高性能計算(HPC)社區(qū)也在轉(zhuǎn)而使用虛擬化和容器技術(shù)。一項由巴西天主教大學進行的研究已經(jīng)取得了一定成果:
“如果可以降低基本的系統(tǒng)開銷(比如CPU、內(nèi)存、硬盤和網(wǎng)絡(luò)),那么HPC無疑會選擇使用虛擬化系統(tǒng),”研究人員表示?!皬倪@個角度來說,我們發(fā)現(xiàn)所有基于容器的系統(tǒng)在CPU、內(nèi)存、硬盤和網(wǎng)絡(luò)方面都擁有接近于本地操作系統(tǒng)的性能表現(xiàn)?!?/p>
? ? ? ?美國某虛擬化公司V***re也針對容器技術(shù)進行了一系列評測對比。容器技術(shù)研究結(jié)果印證了容器技術(shù)擁有接近本地系統(tǒng)的性能表現(xiàn),盡管其并沒有像IBM實驗室那樣針對VMware的Hypervisor發(fā)布非常詳細的測試報告。而這項報告的容器技術(shù)結(jié)果有可能促使VMware做出調(diào)整,以降低Hypervisor的系統(tǒng)開銷,但VMware的報告當中沒有提及硬盤I/O問題。
為了擴展適用范圍,容器技術(shù)仍然需要在安全方面不斷改進。但是現(xiàn)在,我們可以看到的是這種方式可以解決Hypervisor虛擬化當中的大多數(shù)性能問題。再加上更加輕松和快捷的部署方式,容器技術(shù)將會在不久的將來占據(jù)虛擬化市場
? ? ? ?綜合對比 容器 vs 虛擬機
要點1:容器比虛擬機更敏捷
要點2:容器可以支持混合和多云的部署
要點3:將容器與現(xiàn)有IT流程集成更加容易
目前,大多數(shù)企業(yè)組織都具備一個成熟的虛擬化環(huán)境,包括圍繞備份、監(jiān)控和自動化運行的工具,以及圍繞它構(gòu)建的人員和IT流程。通過在虛擬化基礎(chǔ)設(shè)施上運行Docker EE(企業(yè)版),組織可以輕松地將容器集成到現(xiàn)有實踐中,并獲得要點1和要點2的優(yōu)勢。
要點4:容器減少硬件成本
容器化應(yīng)用共享通用OS和軟件庫,極大地提高了VM中的CPU利用率。這意味著可以減少運行環(huán)境中所需要的虛機總數(shù),并增加可在服務(wù)器上運行的應(yīng)用程序數(shù)量。Docker EE可以使服務(wù)器整合度增加50%,這意味著硬件成本大大減少。
而容器的運行平臺可以是虛擬機、裸機或者其他任何公有云平臺。
? ? ? Docker容器與鏡像概念
在2016年的DockerCon大會上,Docker再次推翻了之前PaaS層定義,樹立了一個自己的新標準:Serverless無服務(wù)器架構(gòu)。同時,Docker的鏡像概念已經(jīng)成為很多依托Docker技術(shù)成立的云企業(yè)的賣點。
Docker鏡像可以應(yīng)用程序和它的應(yīng)用環(huán)境一起打包,形成一個"集裝箱",放入倉庫。然后這個集裝箱隨時下載、解壓、應(yīng)用,減輕了開發(fā)者的負擔,不但迅速還能夠保證一致性。
? ? ? ?敏捷性:當敏捷開發(fā)、微服務(wù)等概念逐漸深入,輕量化已經(jīng)成為一種新風向。Docker可以直接建立在操作系統(tǒng)上的方式在啟動方式,讓秒級啟動成為新常態(tài),獲得很多企業(yè)的認可。而模塊化讓擴展和遷移都更迅速、可靠,Docker允許我們輕松將應(yīng)用程序的功能拆分成多個獨立容器,讓Docker輕量化特點進一步凸顯。

? ? ? ?安全性:與真實的物理機相比,虛擬機因為Hypervisor層的存在,讓小白用戶也可以對虛擬機進行任何操作,無須擔心對機器本身造成任何損害。對于企業(yè)而言,虛擬機經(jīng)過四十余年的發(fā)展已經(jīng)成為一種成熟的IT技術(shù),在隔離性、安全性上,虛擬機也顯得更為無可挑剔,相比之下,虛擬機也更為安全。而Docker目前備受詬病的一個點就是:隔離性和安全性。
? ? ? ? 從實現(xiàn)原理上講,Docker有著比虛擬機更少的抽象層,不需要硬件資源池化,不需要Guest OS。與容器相比,虛擬層為用戶提供了一個完整的虛擬機:包括內(nèi)核在內(nèi)的一個完整的系統(tǒng)鏡像,虛擬層可以為每個用戶分配虛擬化后的CPU、內(nèi)存和IO設(shè)備資源,為用戶提供一個隔離性更強的系統(tǒng)環(huán)境。
結(jié)束語
? ? ? ? Docker或者說容器技術(shù)和虛擬機并非簡單的取舍關(guān)系,如果你希望一個完全隔離的和資源有保障的環(huán)境,那么虛擬機是你的不二選擇;如果你只希望進程之間相互隔離,同時擁有輕量化的屬性,那么Linux容器技術(shù)或者Docker,才是更好的選擇。