容器技術及其應用


一、容器技術及其應用

1. 內容摘要

近年來,容器技術及相關應用得到了國內外越來越多的關注度,研發和應用推廣發展勢頭迅猛。在國外,容器技術已經形成了較成熟的生態圈;在國內,金融企業、互聯網企業、IT企業積極投入容器技術研發和應用推廣,發展勢頭迅猛。其主要內容包括:

1.1針對容器技術現狀進行研究和分析

一是梳理了容器技術從開始到現在的發展歷程,對現有容器發展的生態結構進行分析,其中包括開源社區、產業聯盟、解決方案廠商等;

二是對容器技術框架進行了詳細的描述,對技術框架各層涉及的技術點進行了介紹;

三是結合已發布的國家和國際標准,將現有容器技術對於參考架構的實現情況進行分析;

四是分析了容器技術與大數據、物聯網、SDN之間的關系。

1.2 容器技術發展路線及技術架構

通過列舉容器技術典型4個應用場景,包括PaaS平台建設、軟件定義數據中心、容器即服務、持續集成和發布等,分析了容器技術在各種場景下的關鍵成功因素。

1.3 容器未來發展趨勢

結合容器發展現狀和應用場景應用情況,分析了容器技術在應用過程中面臨的問題,同時提出了容器今后發展的生態圖,對未來容器技術發展進行了展望。

2. 容器技術對雲計算領域的深遠影響

繼虛擬化技術出現后,容器技術逐漸成為對雲計算領域具有深遠影響的變革技術。容器技術的發展和應用,將為各行業應用雲計算提供了新思路,同時容器技術也將對雲計算的交付方式、效率、PaaS平台的構建等方面產生深遠的影響,具體體現在以下幾個方面:

2.1 簡化部署

容器技術可以將應用打包成單一地址訪問的、Registry存儲的、僅通過一行命令就可以部署完成的組件。不論將服務部署在哪里,容器都可以從根本上簡化服務部署工作。

2.2 快速啟動

容器技術對操作系統的資源進行再次抽象,而並非對整個物理機資源進虛擬化,通過這種方式,打包好的服務可以快速啟動。

2.3 服務組合

采用容器的方式進行部署,整個系統會變得易於組合,通過容器技術將不同服務封裝在對應的容器中,之后結合一些腳本使這些容器按照要求相互協作,這樣操作不僅可以簡化部署難度還可以降低操作風險。

2.4 易於遷移

容器技術最重要的價值就是為在不同主機上運行服務提供一個輕便的、一致的格式。容器格式的標准化加快交付體驗,允許用戶方便地對工作負載進行遷移,避免局限於單一的平台提供商。

為更好地推進容器及相關技術在中國的落地與實踐,推動容器技術在國內的落地,並建立順應國際技術發展趨勢、符合中國本地化

2.5 相關術語

術語

定義/解釋

鏡像

 系統文件及其應用文件以特殊的文件形式進行備份制作成單一的文件。

微服務架構

 微服務架構是一種特定的軟件應用程序設計方式——將大型軟件拆分為多個獨立可部署服務組合而成的套件方案。

開發運維一體化

可定義為是一種過程、方法、文化、運動或實踐,主要是為了通過一條高度自動化的流水線來加強開發和其他IT職能部門之間的溝通和協作,加速軟件和服務的交付。

運行時引擎

指用戶用來運行容器鏡像的軟件系統

表2.5 術語

2.6 縮略語

 

 

表2.6 縮略語

3. 容器技術現狀

容器技術發展演進路徑

 

 

圖3.1 容器技術演變路徑

容器技術最早可以追溯到1979年UNIX系統中的chroot,最初是為了方便切換root目錄,為每個進程提供了文件系統資源的隔離,這也是OS虛擬化思想的起源。

2000年,BSD吸收並改進了chroot技術,發布了FreeBSD Jails。FreeBSD Jails除文件系統隔離,還添加了用戶和網絡資源等的隔離,每個Jail還能分配一個獨立IP,進行一些相對獨立的軟件安裝和配置。

2001年,Linux發布了Linux Vserver,Linux VServer依舊是延續了Jails的思想,在一個操作系統上隔離文件系統、CPU時間、網絡地址和內存等資源,每一個分區都被稱為一個 security context,內部的虛擬化系統被稱為VPS。

2004年原SUN公司發布了Solaris Containers,Solaris Containers作為Solaris 10中的特性發布的,包含了系統資源控制和zones提供的二進制隔離,Zones 作為在操作系統實例內一個完全隔離的虛擬服務器存在。

2005 年SWsoft公司發布了OpenVZ,OpenVZ和Solaris Containers非常類似,通過打了補丁的 Linux 內核來提供虛擬化、隔離、資源管理和檢查點。OpenVZ 標志着內核級別的虛擬化真正成為主流,之后不斷有相關的技術被加入內核。

2006 年Google 發布了 Process Containers,Process Container 記錄和隔離每個進程的資源使用(包括CPU、內存、硬盤I/O、網絡等),后改名為cgroups(Control Groups),並在2007年被加入Linux內核2.6.24版本中。CGroup是Linux內核提供的一種可以限制、記錄、隔離進程組(process groups)所使用的物理資源(如:cpu,memory,IO等等)的機制。

2008年出現了第一個比較完善的LXC容器技術,基於已經被加入內核的cgroups和Linux namespaces 實現。不需要打補丁,LXC就能運行在任意vanila內核的Linux上。

2011年,CloudFoundry發布了Warden,和LXC不同,Warden可以工作在任何操作系統上,作為守護進程運行,還提供了管理容器的API。

2013年Google公司建立了開源的容器技術棧lmctfy,Google開啟這個項目是為了通過容器實現高性能,高資源利用率,同時接近零開銷的虛擬化技術。目前 Kubernetes 中的監控工具 cAdvisor就起源於lmctfy項目,2015年Google將lmctfy的核心技術貢獻給了 libcontainer。

2013年Docker誕生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)內部的項目,和Warden類似,Docker最初也用了LXC,后來才自己寫了 libcontainer 替換了 LXC。和其它容器技術不同的是,Docker 圍繞容器構建了一套完整的生態,包括容器鏡像標准、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等;

2014年CoreOS創建了rkt,為了改進Docker在安全方面的缺陷,重寫的一個容器引擎,相關容器工具產品包括:服務發現工具etcd和網絡工具flannel等。

2016年微軟公司發布基於Windows 的容器技術Hyper-V Container,Hyper-V Container原理和Linux下的容器技術類似,可以保證在某個容器里運行的進程與外界是隔離的,兼顧虛擬機的安全性和容器的輕量級。

Docker for Windows 是在 Windows 上運行一個 Linux 虛擬機,里面跑 Linux Docker。

而 Docker on Windows 是將 Docker 引擎移植到 Windows,提供 Docker API, 直接在 Windows 系統上通過移植后的 Docker Engine,來運行Windows容器,在里面跑的是 Windows 程序,運行於 Windows 內核(而不是Linux程序運行於Linux內核)。由於使用 Docker API,可以支持 Compose, Swarm 等。

4. 容器技術發展生態

隨着容器技術的演進,越來越多的機構開始重視並參與到容器技術的探索中來。從最初的以Unix或Linux項目到開源社區,到各種類型的容器技術創業公司、IT 企業及產業聯盟,容器技術的發展生態也在逐漸得到發展與豐富。在開源社區方面,附錄A中列出了國際上的OCI和CNCF(Cloud Native Computing Foundation,簡稱CNCF,下同),容器的開源項目也在附錄B中列出;在國內的IT 企業和創業公司方面,還提供了多個行業應用案例,這些行業應用案例在附錄 D 中列出;產業聯盟方面包括國際包括 CNCF,國內包括中國開源雲聯盟(COSCL)。容器的開源社區、創業公司、IT 企業、產業聯盟共同構成容器技術發展的生態圈。

5. 容器技術框架

通過研究、梳理和分析現有的容器技術,形成容器相關技術的技術架構,如圖2.2所示。

圖2.2 容器技術框架

 

 

5.1 服務器層

當運行容器鏡像時,容器本身需要運行在傳統操作系統之上,而這個操作系統既可以是基於物理機,也可以是基於 VM。服務器層包含了這兩種場景,泛指了容器運行的環境,同時容器並不關心服務器層如何提供和管理,它的期望只是能獲得這些服務器資源。

5.2 資源管理層

資源管理包含了服務器、操作系統等資源的管理。其中如果是物理服務器的話,需要涉及物理機管理系統(例如Rocks等);如果是虛擬機的話,需要使用虛擬化平台。此外,無論是物理服務器還是虛擬機,都需要對其中的操作系統加以管理(例如:Chef、Puppet、Ansible和SaltStack等)。而傳統的存儲和網絡管理也包含在資源管理層。由於存儲,網絡兩者選擇眾多,不一而足,因此不再列舉。

總而言之,資源管理層的核心目標是對服務器和操作系統資源進行管理,以支持上層的容器運行引擎。

5.3 運行引擎層

容器運行引擎層主要指常見的容器系統,包括 Docker、rkt、Hyper、CRI-O。這些容器系統的共通作用包括啟動容器鏡像、運行容器應用和管理容器實例。運行引擎又可以分為管理程序和運行時環境兩個模塊。 需要注意的是,運行引擎是單機程序,類似虛擬化軟件的KVM和Xen,不是集群分布式系統。引擎運行於服務器操作系統之上,接受上層集群系統的管理。 

 相關開源項目包括: 

  ——資源隔離:Cgroup、Hypervisor; 

  ——訪問限制:Namespace、Hypervisor; 

  ——管理程序:Docker Engine、OCID、hyperd,RKT、CRI-O; 

  ——運行時環境:runC(Docker)、runV(Hyper)、runZ (Solaris)

5.4 集群管理層

可以把容器的集群管理系統類和針對 VM 的集群管理系統划等號,都是通過對一組服務器運行分布式應用。而這兩者的細微區別在於,VM 的集群管理系統需要運行在物理服務器上,而容器集群管理系統既可以運行在物理服務器上,也可以運行在 VM 上。 常見的容器集群管理系統包括:Kubernetes、Docker Swarm、Mesos。這三者各有特色,但隨着時間推移,三者的融合將越發明顯。Kubernetes 在這三者中比較特殊,它的地位更接近OpenStack。圍繞這 Kubernetes,CNCF 基金會已經建立了一個非常強大的生態體系,這是Docker Swarm和Mesos都不具備的。而CNCF基金會本身也正向着容器界的OpenStack基金會發展,值得大家重點關注。 

集群管理層涉及到的相關開源軟件項目包括: 

  ——指揮調度:Docker Swarm、Kubernetes、Mesos等 

  ——服務發現:Etcd、Consul、Zookeeper,DNS 

  ——監控:Prometheous 

  ——存儲:Flocker 

  ——網絡:Calico、Weave、Flannel

5.5 應用層

泛指所有運行於容器之上的應用程序,以及所需的輔助系統,包括:監控、日志、安全、編排、鏡像倉庫等等。 

  ——監控模塊,相關開源項目包括:Prometheous、cAdvisor、Sysdig等; 

  ——日志,相關開源項目包括:Fluented、LogStash等; 

  ——安全,包括容器鏡像的安全掃描,運行環境的安全隔離,集群環境的安全管理等功能; 

  ——編排,相關開源項目包括:Docker Compose、CoreOS Fleet等; 

  ——CI/CD,相關開源項目包括:Jenkins、Buildbot、Gitlab CI、Drone.io; 

  ——鏡像倉庫:Docker Hub、VMware Harbor、Huawei Dockyard。

6. 容器技術對參考架構的實現情況

國家標准GB/T 32399-2015《信息技術 雲計算 參考架構》(簡稱CCRA,修改采用ISO/IEC 17789)是2015年發布的國家標准,描述了雲計算的利益相關者,雲計算系統的基本特征,雲計算的基本活動和功能組件,我國是該國際標准的立項推動國之一,積極參與了該國際標准的編制,該標准的誕生標志着國際三大標准化組織ISO、IEC和ITU首次在雲計算領域統一認識並達成一致,是國際國內雲計算領域的最重要的基礎性標准。在該標准中描述了雲計算的功能架構,功能架構包含了支撐雲計算活動所需的功能,如圖6圖中標藍色的部分是現有容器技術已經實現的內容。

 

 

圖6 CCRA功能組件圖

7. 容器技術的關鍵技術內容

7.1 鏡像

容器的鏡像通常包括操作系統文件、應用本身的文件、應用所依賴的軟件包和庫文件。為了提高容器鏡像的管理效率,容器的鏡像采用分層的形式存放。容器的鏡像最底層通常是Linux的rootfs和系統文件,再往上則是各種軟件包層。這些文件層在疊加后成為完整的只讀文件系統,最終掛載到容器里面。在運行過程中,容器應用往往需要寫入文件數據,容器引擎為此需再創建一個可寫層,加在鏡像的只讀文件系統上面。使用分層的容器鏡像之后,鏡像的下載和傳輸更加便利,因為只需要在宿主機上把缺少的鏡像文件層次下載即可,無需整個鏡像傳送。

在Linux中,聯合文件系統UnionFS能夠把多個文件層疊加在一起,並透明地展現成一個完整的文件系統。常見的聯合文件系統有AUFS(AnotherUnion File  System),btrfs,OverlayFS和DeviceMapper等。

7.2 運行時引擎

容器運行時引擎和容器鏡像兩者的關系類似於虛擬化軟件和虛擬機鏡像的關系。容器運行時引擎的技術標准主要是由OCI基金會領導社區進行制定。目前OCI已經發布了容器運行時引擎的技術規范,並認可了runC(Docker公司提供)和runV(Hyper公司提供)兩種合規的運行引擎。

7.3 容器編排

容器編排工具通過對容器服務的編排,決定容器服務之間如何進行交互。容器編排工具一般要處理以下幾方面的內容: 

1)容器的啟動。選擇啟動的機器、鏡像和啟動參數等; 

2)容器的應用部署。提供方法對應用進行部署; 

3)容器應用的在線升級。提供方法可以平滑地切換到應用新版本。 

容器的編排一般是通過描述性語言YAML或者JSON來定義編排的內容。目前主要的編排工具有Docker compose和基於Google的Kubernetes helm等。

7.4 容器集群

容器集群是將多台物理機抽象為邏輯上單一調度實體的技術,為容器化的應用提供資源調度、服務發現、彈性伸縮、負載均衡等功能,同時監控和管理整個服務器集群,提供高質量、不間斷的應用服務。容器集群主要包含以下技術:

資源調度:主要以集中化的方式管理和調度資源,按需為容器提供 CPU、內存等資源; 

服務發現:通過全局可訪問的注冊中心實現任何一個應用能夠獲取當前環境的細節,自動加入到當前的應用集群中;

彈性伸縮:在資源層面,監控集群資源使用情況,自動增減主機資源;在應用層面,可通過策略自動增減應用實例來實現業務能力的彈性伸縮;

負載均衡:當應用壓力增加,集群自動擴展服務將負載均衡至每一個運行節點;當某個節點出現故障,應用實例重新部署運行到健康的節點上。

7.5 服務注冊和發現

容器技術在構建自動化運維場景中,服務注冊和發現是重要的兩個環節,一般通過一個全局性的配置服務來實現。其基本原理類似公告牌信息發布系統,A 服務(容器應用或者普通應用)啟動后在配置服務器(公告牌)上注冊一些對外信息(比如IP和端口),B服務通過查詢配置服務器(公告牌)來獲取A注冊的信息(IP和端口)。

7.6 熱遷移

熱遷移(Live Migration),又稱為動態遷移或者實時遷移,是指將整容器的運行時狀體完整保存下來,同時可以快速地在其他主機或平台上恢復運行。容器熱遷移主要應用在兩個方面:一是有多個操作單元執行任務,熱遷移能迅速地復制與遷移容器,做到無感知運行作業;二是可以處理數據中心中集群的負載均衡,大量數據涌來無法運行計算時,可利用熱遷移創建多個容器處理運算任務,調節信息數據處理峰谷,配置管理負載均衡比例,降低應用延遲。

8. 容器技術與相關技術的關系

8.1 容器與雲計算

虛擬化是雲計算的重要基礎,容器定義了一套從構建到執行的標准化體系,改變了傳統的虛擬化技術,深度影響了雲計算領域,容器是雲計算的未來。以Docker 為代表的容器技術越來越深刻地影響雲計算,也改變我們的日常開發、運維和測試。相比於虛擬機,容器的輕量、快速啟動和低開銷,以及基於此的按業務打包和微服務模式,這些特點被用來改進 DevOps,很多場景下更適合做大規模集群管理和搭建靈活的分布式系統。通過深度整合了IaaS、PaaS 及容器技術,提供彈性計算、DevOps 工具鏈及微服務基礎設施等服務,幫助企業解決IT、架構及運維等問題,使企業更聚焦於業務,構建了新一代的雲計算生態體系。

8.2 容器與大數據

大數據平台如果能采用容器方式發布,與Spark、Hadoop、Cassandra等相關技術的集成與對接,可降低整個系統的搭建難度,縮短交付和安裝周期,減少安裝失敗風險。容器化后,各類大數據平台組件可以輕松實現遷移的目的,也能實現多復本控制和高可用。

8.3 容器與物聯網

物聯網(IoT)技術發展日新月異,而容器技術剛好遇到這樣的機遇,將在幾個方面促進物聯網的發展。

首先,運用容器技術后,可通過容器封裝,可簡化下載、安裝部署、啟動和后續應用更新。這將大大加速物聯網應用開發部署。其次,容器技術還可以滿足物聯網在自動監控,集中式維護管理方面的需求。最后,數據采集端環境千變萬化,如果需要手動適配工作量巨大,如果采用容器化技術,只要打包幾類典型的容器鏡像,如ARM,X86,x86_64等,就可以事半功倍實現終端的發布工作。

8.4 容器與SDN

隨着容器部署規模的增大,跨主機、跨網絡的容器遷移成為常態。而容器更多地關注於輕量化本身,對於網絡架構並沒有太多關注。過於復雜的體系結構和管理過程,容易讓整個容器網絡和系統陷入不可控的非穩定狀態。通過SDN和Overlay網絡結合,將控制轉發分離、集中控制管理理念應用於容器網絡,還可以最大程度增強容器網絡的彈性伸縮能力和簡化網絡管理。

另外,SDN與容器的配合,是相得益彰、互相促進的。業界的SDN控制器和系統一般都比較龐大,安裝、運行都極為復雜。通過Docker技術,能夠實現SDN控制器的輕量級快速部署、安裝、運行。

9. 容器應用

9.1 容器技術應用場景

9.1.1 PaaS平台建設

最早的PaaS平台方案初步解決了很多客戶對於應用彈性的需求,但是在容器技術之前,構建一套PaaS平台面臨着組件多、量級大、改造成本高等挑戰,而且對於運行在不同 PaaS 平台上的應用,很難避免應用對平台的深度依賴。譬如,不同的PaaS平台對彈性、高可用、性能、監控、日志、版本更新等的實現方式不同,則對其上應用的架構要求也不同;另外,在編程語言和技術棧方面,也會導致應用對平台供應商的深度綁定。總之,在傳統PaaS平台面前,我們在開發應用時不得不配合平台的要求。

而容器技術的出現,很好的解決了上述問題。容器是以應用為中心的虛擬化環境,與編程語言、技術棧無關,比傳統PaaS靈活;對應用的支撐也比底層平台多,可以發揮微服務架構的優勢。同時,容器是基於輕量級虛擬化的技術,天生具有高密度的特性,可以更加高效地使用資源。

9.1.2 軟件定義數據中心

       互聯網和海量數據正以前所未有的增長趨勢沖擊着整個數據中心行業,隨着互聯網、電子商務、社交網絡、移動辦公等互聯網應用的迅速發展,傳統數據中心逐漸難以滿足新業務的發展需求,傳統數據中心面臨不匹配業務的靈活變化、能耗高、運維難、密度低、不滿足雲和虛擬化彈性伸縮場景,也面臨着應用的快速、批量、移動部署慢等問題。 

       軟件定義數據中心負責將存儲、計算、網絡資源依據策略進行自動化調度與統一管理、編排和監控,同時根據用戶需求形成不同的服務並提供計費等功能。容器技術可充分利用底層的各項計算、存儲和網絡資源,靈活構建容器應用,實現具備應用輕量級的容器承載能力、應用集群的松耦合和資源動態彈性伸縮的能力、實現可視化運維和自動化管控的能力、實現平台自動化部署和升級的能力,從而解決了容器平台對基礎設施資源調用的需求,容器平台將數據中心轉化成為一個更加靈活高效的業務應用平台,其開放性和兼容性契合了數據中心對異構、大規模、可移植、互操作等方面的需求,容器技術為雲計算的實施提供了強有力的支撐。

9.1.3 容器即服務

       傳統IaaS在應用過程中面臨運維方面的問題,傳統IaaS服務沒有從根本上加速企業內部的開發運維效率,更多的主要是體現對於IT部門的技術優化和提升一定的運維能力,運維和開發人員之間依然存在傳統IT手段同樣的溝通成本。容器技術三個方面的優勢可以有助於解決傳統IaaS面臨的問題。首先,容器的本質是一種操作系統級別的虛擬化,啟動一個應用容器其實就是啟動一個進程,因此使得容器占用空間小、資源利用率高、本身非常輕,執行起來效率較高。這些是容器技術與傳統虛擬機技術的最大差別。其次,容器技術使用鏡像方式能夠將應用程序和它依賴的操作系統、類庫以及運行時環境整體打包,統一交付,使得運維壓力大大降低。最后,容器技術與底層所使用的平台無關,容器可以在Linux平台各發行版上兼容,這意味着應用架構一旦轉換為容器化並且遷移部署之后,就可以在任何雲平台之間無縫遷移。

9.1.4 持續集成和發布(CI/CD)

       傳統軟件架構特性是單體應用,開發周期至少以月為單位進行發布和升級,代碼一般使用一種語言開發,不同的組件緊耦合,經常依賴於公共的庫,部署周期以月為單位,部署依賴人工操作,組件版本復雜,操作風險高,時間管理成本均居高不下。 

       將容器技術引入到開發和運維環節具有以下幾個方面的優勢:一是提供了交付環境一致性。從開發到運維的工作流程中,由於基礎環境的不一致造成了諸多問題,但通過使用容器技術在不同的物理設備、虛擬機、雲平台上運行,將鏡像作為標准的交付物,應用以容器為基礎提供服務,實現多套環境交付的一致性;二是提供了快速部署。工具鏈的標准化將DevOps所需的多種工具或軟件進行容器化,在任意環境實現快速部署。三是輕量和高效。與虛擬機相比,容器僅需要封裝應用及相關依賴文件,更加輕量,提高資源利用率。因此企業通過容器技術進行DevOps的實踐,可較好的縮短軟件發布周期,提升產品交付迭代速度,提高生產效率。

9.2 容器技術優勢分析

9.2.1 從運維者維度看容器技術優勢

         快速部署:

         使用容器能夠利用鏡像快速部署運行服務,能夠實現業務的快速交付,縮短業務的上線周期,極大地方便運維人員的上線部署工作。

         彈性伸縮:

         使用容器技術,當遇到高並發、高流量的大活動,容器做到根據業務的負載進行彈性擴容,以提供更好的服務。當訪問量降低后,容器平台能夠自動縮容,及時釋放空閑資源。

         可移植性:

         容器可以運行於Linux、Unix、Window的操作系統之上,可以利用容器將服務移植到不同的操作系統環境下運行。

         輕量:

        相比傳統虛擬機,容器更加輕量,資源消耗更低,鏡像體積更小。

        高可用:

        容器運行的業務通常由一組容器來提供服務,容器平台的服務發現功能可以保證容器實例的副本數量即使在某個主機宕機的情況下也能維持不變。保證服務能夠正常提供服務。

        資源利用率高:

        容器較傳統虛擬化有更低資源使用粒度,在一台物理機上可運行上百個容器服務,從而提高服務器硬件資源的利用率。

9.2.2 從開發者維度看容器技術優勢

快速構建開發環境:

開發應用除去自身編碼工作之外,還需要額外的數據庫、緩存或消息隊列等組件在本地進行測試,使用容器技術可以快速完成構建,省去了設備申請、采購的流程,簡化了開發者組件安裝工作,提高了開發效率。

提供一致性的開發環境:

采用容器鏡像技術,只需要一次構建就可以實現在不同的項目成員之間快速復制出一套完全一致的開發環境,從而消除因環境異構而導致的不一致性,降低軟件缺陷出現的概率。 同時,在開發環境和測試環境中使用同樣的鏡像,也能保證開發和測試環境的一致性,提前發現軟件缺陷,減少對因環境不一致而導致的缺陷的調查成本。

方便開發環境版本管理:

通過對應用程序鏡像的版本化管理,可以實現同一套應用程序的多版本共存,尤其是存在對某些組件多版本支持的情況下,通過容器技術,可以輕松支持該組件的多個版本。 對應用程序容器的版本化,在應用程序本身存在多版本的情況下,開發者還能在快速進行版本回溯,提高問題調查和缺陷修復的效率;在發布失敗時,也能快速回滾。

9.2.3 容器技術與其他技術的集成

容器技術與在應用過程中需要與以下幾個方面技術進行集成才能在各應用場景中進行應用。一是與IaaS管理平台集成。如果容器選擇在VM中運行,就需要與VM的管理平台進行對接。在私有雲場景下需要對接例如OpenStack(容器技術與OpenStack技術集成具體可參考附錄C)、VMware產品;在公有雲場景下,需要與公有雲服務提供商,例如阿里雲、百度雲、AWS等公司提供的VM進行集成。二是與開發工具集成。開發工具相關技術的集成是構建持續集成、持續發布以及DevOps環境的必須條件,目前比較常用的開發工具包括Jenkins、Shippable(for Docker)等。三是與網絡進行集成。不同的應用運行於容器集群時有網絡的互通需求,因此容器技術在具體場景應用時需要與網絡二層或三層功能模塊進行集成,以達到互通。四是與存儲管理模塊集成。存儲是應用數據存儲的必備,不同的存儲在性能、存儲空間、易用度等方面差別較大,如果要支持更多的應用,容器平台需要內置外部存儲管理插件,與存儲平台進行集成。

10.未來發展趨勢

10.1 容器技術問題分析

容器技術擁有快速擴展、靈活性和易用性等諸多優勢,但在容器應用過程中會遇到以下幾個方面的問題:一是兼容性方面,容器版本在快速更新中,以Docker 相關技術為例,每隔1-3個月左右就有版本的升級,一些核心模塊依賴於高版本內核,運維時存在版本兼容問題。二是目前容器技術沒有統一的標准,例如:在容器層面有Docker Container、Mesos Container、rkt、CRI-O等眾多容器技術產品;此外,Google 雖然在聯合容器業界相關的廠商制定標准,但目前也未在容器方面進行完全的統一。三是管理容器環境和應用也較為復雜,不僅需要多類技術支撐,包括容器管理、編排、應用打包、容器間的網絡、數據快照等,還需要增加對容器的監控。四是容器在應用過程中還需要考慮在容器間、容器與系統間的性能隔離,內核共享帶來的安全隔離問題。五是在使用習慣角度上,容器使用習慣會有別於主機或虛擬機,容器技術在應用過程中大部分用戶需要逐步引導才能適應容器的使用方式。

10.2 容器技術未來生態圖及展望

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM