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