1.摘要:
容器中有2個(gè)重要的概念,一個(gè)是鏡像(Image),另一個(gè)是容器(container)。容器即利用docker構(gòu)建出來的虛擬環(huán)境,可理解為一個(gè)自給自足的LINUX環(huán)境(本文以linux環(huán)境為例),在功能上,與一個(gè)完整的linux環(huán)境基本上一致。Docker容器技術(shù)CPU、內(nèi)存利用率更高,網(wǎng)絡(luò)I/O性能更高,磁盤的讀寫性能也比常規(guī)的要更好,docker技術(shù)是云計(jì)算技術(shù)發(fā)展的主要方向。
云計(jì)算是一種融合了多項(xiàng)計(jì)算技術(shù)的以數(shù)據(jù)和處理能力為中心的密集型計(jì)算模式,其中以虛擬化,SDN和分布式存儲(chǔ)等技術(shù)最為關(guān)鍵,經(jīng)過多年發(fā)展,云計(jì)算已經(jīng)從剛開始的發(fā)展期步入快速成長期,越來越多的企業(yè)已經(jīng)開始使用云計(jì)算服務(wù)。與此同時(shí),云計(jì)算的核心技術(shù)也在發(fā)生著巨大的變化,新一代的技術(shù)正在優(yōu)化甚至取代前一代技術(shù)。Docker容器技術(shù)以其輕便、靈活和快速部署等特性隊(duì)傳統(tǒng)的基于虛擬機(jī)的虛擬化技術(shù)帶來了顛覆性的挑戰(zhàn),正在改變著基礎(chǔ)設(shè)施即服務(wù)(IaaS)平臺(tái)和平臺(tái)即服務(wù)(平臺(tái))的架構(gòu)和實(shí)現(xiàn)。
Docker容器技術(shù)是一個(gè)風(fēng)頭直追OPENSTACK的云計(jì)算開源項(xiàng)目,關(guān)于它的熱議以席卷虛擬化乃至云計(jì)算行業(yè),業(yè)內(nèi)各大廠商(AWS、MICROSOFT、IBM、vmware等)都加入了容器的行列。
2. DOCKER技術(shù)介紹
Docker是基于Go語言實(shí)現(xiàn)的云開源項(xiàng)目,誕生于2013年初。DOCKER自開源后收到廣泛關(guān)注和討論,目前已有多個(gè)相關(guān)項(xiàng)目,逐漸形成了圍繞Docker的生態(tài)系統(tǒng)。
DOCKER容器技術(shù)是近年來新興的虛擬化技術(shù),容器技術(shù)和虛擬化技術(shù)的實(shí)現(xiàn)原理,如圖所示:
?????????????????????????????????????????????????? 
虛擬機(jī)技術(shù)中的虛擬機(jī)操作系統(tǒng)和虛擬機(jī)管理程序?qū)釉贒ocker中被Docker引擎層所替代。虛擬機(jī)操作系統(tǒng)為虛擬機(jī)安裝的操作系統(tǒng),它是一個(gè)完整操作系統(tǒng)內(nèi)核;虛擬機(jī)管理程序?qū)涌梢院唵卫斫鉃橐粋€(gè)硬件虛擬化平臺(tái),它在宿主機(jī)操作系統(tǒng)是以內(nèi)核態(tài)的驅(qū)動(dòng)存在的。
因?yàn)槿萜鞑恍枰獮槊總€(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng),所以容器會(huì)擁有更高的資源使用效率。同時(shí),容器實(shí)例規(guī)模更小、創(chuàng)建和遷移速度也更快。因此,相比于虛擬機(jī),同等配置的硬件設(shè)備當(dāng)中可以部署數(shù)量更多的容器實(shí)例。
2.1 容器性能
相比傳統(tǒng)虛擬化技術(shù),容器不需要為每個(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng),所以容器會(huì)擁有更高的資源使用效率。容器資源利用率明顯高于虛擬機(jī),如下圖所示:
?????????????????????????????????????????????????? 
物理機(jī)容器CPU利用率是大約虛擬機(jī)的1.3倍,內(nèi)存讀效率是大約是虛擬機(jī)的1.3倍。磁盤I/O性能容器是虛擬機(jī)的2倍;網(wǎng)絡(luò)I/O性能容器是VM的1.1倍,書記哭讀效率容器是虛擬機(jī)的1.2倍,數(shù)據(jù)可寫效率容器大約是虛擬機(jī)的1.1倍。由此可見,采用容器技術(shù)在性能上將全面超過傳統(tǒng)的虛擬機(jī)技術(shù)。
2.2 管理能力
容器技術(shù)所提供的輕量級(jí)虛擬化實(shí)現(xiàn)秒級(jí)部署、彈性擴(kuò)展,并高效的利用計(jì)算資源。容器鏡像正逐漸成為應(yīng)用交付的標(biāo)準(zhǔn),加之迅速成長的生態(tài)系統(tǒng),將會(huì)是應(yīng)用發(fā)布、分享的首選方式。管理平臺(tái)基本能提供控制臺(tái),容器啟停、集群管理等運(yùn)維管理功能,可查看容器信息、集群信息、性能信息和日志信息;支持應(yīng)用快速擴(kuò)展和負(fù)載均衡能力;具備故障自動(dòng)恢復(fù)能力。
2.3 存儲(chǔ)能力
容器是近年興起的應(yīng)用開發(fā)交付和運(yùn)維的方式,隨著應(yīng)用模式的深入,已經(jīng)從原先無狀態(tài)為主的應(yīng)用,逐漸發(fā)展到有狀態(tài)的容器應(yīng)用,有狀態(tài)的容器應(yīng)用必須要有數(shù)據(jù)持久化存儲(chǔ)的能力。
在容器中運(yùn)行的應(yīng)用,應(yīng)用真正需要保存的數(shù)據(jù),可以寫入持久化的數(shù)據(jù)卷。由于以微服務(wù)架構(gòu)為主的容器應(yīng)用多為分布式系統(tǒng),容器可能在多個(gè)節(jié)點(diǎn)中動(dòng)態(tài)地啟動(dòng)、停止、伸縮或遷移,因此,當(dāng)容器應(yīng)用具有吃覺化的數(shù)據(jù)時(shí),必須確保數(shù)據(jù)能被不同的節(jié)點(diǎn)所訪問。
2.4.隔離能力
Docker容器技術(shù)安全性是生產(chǎn)應(yīng)用中必須重點(diǎn)考慮的問題,必須保障各個(gè)容器之間的安全隔離。目前的容器產(chǎn)品大多能實(shí)現(xiàn)以下安全功能:
(1)
可以保證容器和容器之間、容器和宿主機(jī)之間的CPU、內(nèi)存、磁盤I/O的資源隔離;
(2)
可以通過SDN技術(shù),實(shí)現(xiàn)不同VXLAN間的隔離;
(3)
通過鏡像倉庫的權(quán)限控制以及鏡像校驗(yàn)實(shí)現(xiàn)鏡像的安全訪問。
2.5. 應(yīng)用部署
Docker容器技術(shù)具有快速部署、環(huán)境一致性等特點(diǎn)。傳統(tǒng)模式下,運(yùn)維人員需要部署測(cè)試和身纏環(huán)境,部署工作相對(duì)比較復(fù)雜,具有很多重復(fù)工作,浪費(fèi)時(shí)間。容器模式下,開發(fā)人員將部署環(huán)境形成鏡像,運(yùn)維以及測(cè)試人員只需獲取鏡像啟動(dòng)容器即可,減輕了工作量,節(jié)省了時(shí)間。容器鏡像啟動(dòng),自動(dòng)服務(wù)發(fā)現(xiàn)與負(fù)載均衡配置,耗時(shí)約5min,虛擬機(jī)實(shí)例復(fù)制、網(wǎng)絡(luò)配置,耗時(shí)約30~60min。因此容器極大地提供了應(yīng)用部署速度。
2.6. 容器技術(shù)的形式
容器是傳統(tǒng)虛擬技術(shù)的補(bǔ)充,可以在基礎(chǔ)設(shè)施優(yōu)化、DevOps等領(lǐng)域發(fā)揮其獨(dú)有的優(yōu)勢(shì),隨著容器技術(shù)和生態(tài)發(fā)展逐步成熟,行業(yè)應(yīng)用越來越多,容器引擎、群集管理工具將快速發(fā)展。
2.6.1 容器技術(shù)的優(yōu)勢(shì)
容器不需要為每個(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng),容器資源利用率明顯高于虛擬機(jī)。CPU利用率、內(nèi)存讀寫、I/O性能等均高于傳統(tǒng)虛擬機(jī)技術(shù)。另外Docker容器技術(shù)具有啟動(dòng)速度更快、快速部署、環(huán)境一致性和在線業(yè)務(wù)的彈性伸縮等特性。
2.6.2 容器技術(shù)的劣勢(shì)
容器技術(shù)在大規(guī)模的壓力測(cè)試下的性能有待進(jìn)一步的驗(yàn)證,容器運(yùn)行維護(hù)的經(jīng)驗(yàn)還不如虛擬機(jī)技術(shù)豐富。
2.7.應(yīng)用場(chǎng)景
容器技術(shù)在應(yīng)用場(chǎng)景中 主要有下列這些場(chǎng)景:
(1)
短連接、無狀態(tài)的應(yīng)用系統(tǒng),非常適合容器可以根據(jù)業(yè)務(wù)量在線動(dòng)態(tài)伸縮的特點(diǎn);
(2)
Web服務(wù)器,應(yīng)用服務(wù)器、RESTFUL API;
(3)
開發(fā)、測(cè)試、新技術(shù)試驗(yàn)。