近年來,容器技術及相關應用獲得了國內外愈來愈多的關注度,研發和應用推廣發展勢頭迅猛。在國外,容器技術已經造成了較成熟的生態圈;在國內,金融企業、互聯網企業、IT企業積極投入容器技術研發和應用推廣,發展勢頭迅猛。其主要內容包括:數據庫
一是梳理了容器技術從開始到如今的發展歷程,對現有容器發展的生態結構進行分析,其中包括開源社區、產業聯盟、解決方案廠商等;編程
二是對容器技術框架進行了詳細的描述,對技術框架各層涉及的技術點進行了介紹;緩存
三是結合已發佈的國家和國際標準,將現有容器技術對於參考架構的實現狀況進行分析;安全
四是分析了容器技術與大數據、物聯網、SDN之間的關係。服務器
經過列舉容器技術典型4個應用場景,包括PaaS平臺建設、軟件定義數據中心、容器即服務、持續集成和發佈等,分析了容器技術在各類場景下的關鍵成功因素。網絡
結合容器發展示狀和應用場景應用狀況,分析了容器技術在應用過程當中面臨的問題,同時提出了容器從此發展的生態圖,對將來容器技術發展進行了展望。架構
繼虛擬化技術出現後,容器技術逐漸成爲對雲計算領域具備深遠影響的變革技術。容器技術的發展和應用,將爲各行業應用雲計算提供了新思路,同時容器技術也將對雲計算的交付方式、效率、PaaS平臺的構建等方面產生深遠的影響,具體體如今如下幾個方面:併發
容器技術能夠將應用打包成單一地址訪問的、Registry存儲的、僅經過一行命令就能夠部署完成的組件。不論將服務部署在哪裏,容器均可以從根本上簡化服務部署工做。app
容器技術對操做系統的資源進行再次抽象,而並不是對整個物理機資源進虛擬化,經過這種方式,打包好的服務能夠快速啓動。負載均衡
採用容器的方式進行部署,整個系統會變得易於組合,經過容器技術將不一樣服務封裝在對應的容器中,以後結合一些腳本使這些容器按照要求相互協做,這樣操做不只能夠簡化部署難度還能夠下降操做風險。
容器技術最重要的價值就是爲在不一樣主機上運行服務提供一個輕便的、一致的格式。容器格式的標準化加快交付體驗,容許用戶方便地對工做負載進行遷移,避免侷限於單一的平臺提供商。
爲更好地推動容器及相關技術在中國的落地與實踐,推進容器技術在國內的落地,並創建順應國際技術發展趨勢、符合中國本地化
術語 |
定義/解釋 |
鏡像 |
系統文件及其應用文件以特殊的文件形式進行備份製做成單一的文件。 |
微服務架構 |
微服務架構是一種特定的軟件應用程序設計方式——將大型軟件拆分爲多個獨立可部署服務組合而成的套件方案。 |
開發運維一體化 |
可定義爲是一種過程、方法、文化、運動或實踐,主要是爲了經過一條高度自動化的流水線來增強開發和其餘IT職能部門之間的溝通和協做,加速軟件和服務的交付。 |
運行時引擎 |
指用戶用來運行容器鏡像的軟件系統 |
表2.5 術語
表2.6 縮略語
容器技術發展演進路徑
圖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 等。
隨着容器技術的演進,愈來愈多的機構開始重視並參與到容器技術的探索中來。從最初的以Unix或Linux項目到開源社區,到各類類型的容器技術創業公司、IT 企業及產業聯盟,容器技術的發展生態也在逐漸獲得發展與豐富。在開源社區方面,附錄A中列出了國際上的OCI和CNCF(Cloud Native Computing Foundation,簡稱CNCF,下同),容器的開源項目也在附錄B中列出;在國內的IT 企業和創業公司方面,還提供了多個行業應用案例,這些行業應用案例在附錄 D 中列出;產業聯盟方面包括國際包括 CNCF,國內包括中國開源雲聯盟(COSCL)。容器的開源社區、創業公司、IT 企業、產業聯盟共同構成容器技術發展的生態圈。
經過研究、梳理和分析現有的容器技術,造成容器相關技術的技術架構,如圖2.2所示。
圖2.2 容器技術框架
當運行容器鏡像時,容器自己須要運行在傳統操做系統之上,而這個操做系統既能夠是基於物理機,也能夠是基於 VM。服務器層包含了這兩種場景,泛指了容器運行的環境,同時容器並不關心服務器層如何提供和管理,它的指望只是能得到這些服務器資源。
資源管理包含了服務器、操做系統等資源的管理。其中若是是物理服務器的話,須要涉及物理機管理系統(例如Rocks等);若是是虛擬機的話,須要使用虛擬化平臺。此外,不管是物理服務器仍是虛擬機,都須要對其中的操做系統加以管理(例如:Chef、Puppet、Ansible和SaltStack等)。而傳統的存儲和網絡管理也包含在資源管理層。因爲存儲,網絡二者選擇衆多,不一而足,所以再也不列舉。
總而言之,資源管理層的核心目標是對服務器和操做系統資源進行管理,以支持上層的容器運行引擎。
容器運行引擎層主要指常見的容器系統,包括 Docker、rkt、Hyper、CRI-O。這些容器系統的共通做用包括啓動容器鏡像、運行容器應用和管理容器實例。運行引擎又能夠分爲管理程序和運行時環境兩個模塊。 須要注意的是,運行引擎是單機程序,相似虛擬化軟件的KVM和Xen,不是集羣分佈式系統。引擎運行於服務器操做系統之上,接受上層集羣系統的管理。
相關開源項目包括:
——資源隔離:Cgroup、Hypervisor;
——訪問限制:Namespace、Hypervisor;
——管理程序:Docker Engine、OCID、hyperd,RKT、CRI-O;
——運行時環境:runC(Docker)、runV(Hyper)、runZ (Solaris)
能夠把容器的集羣管理系統類和針對 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
泛指全部運行於容器之上的應用程序,以及所需的輔助系統,包括:監控、日誌、安全、編排、鏡像倉庫等等。
——監控模塊,相關開源項目包括:Prometheous、cAdvisor、Sysdig等;
——日誌,相關開源項目包括:Fluented、LogStash等;
——安全,包括容器鏡像的安全掃描,運行環境的安全隔離,集羣環境的安全管理等功能;
——編排,相關開源項目包括:Docker Compose、CoreOS Fleet等;
——CI/CD,相關開源項目包括:Jenkins、Buildbot、Gitlab CI、Drone.io;
——鏡像倉庫:Docker Hub、VMware Harbor、Huawei Dockyard。
國家標準GB/T 32399-2015《信息技術 雲計算 參考架構》(簡稱CCRA,修改採用ISO/IEC 17789)是2015年發佈的國家標準,描述了雲計算的利益相關者,雲計算系統的基本特徵,雲計算的基本活動和功能組件,我國是該國際標準的立項推進國之一,積極參與了該國際標準的編制,該標準的誕生標誌着國際三大標準化組織ISO、IEC和ITU首次在雲計算領域統一認識並達成一致,是國際國內雲計算領域的最重要的基礎性標準。在該標準中描述了雲計算的功能架構,功能架構包含了支撐雲計算活動所需的功能,如圖6圖中標藍色的部分是現有容器技術已經實現的內容。
圖6 CCRA功能組件圖
容器的鏡像一般包括操做系統文件、應用自己的文件、應用所依賴的軟件包和庫文件。爲了提升容器鏡像的管理效率,容器的鏡像採用分層的形式存放。容器的鏡像最底層一般是Linux的rootfs和系統文件,再往上則是各類軟件包層。這些文件層在疊加後成爲完整的只讀文件系統,最終掛載到容器裏面。在運行過程當中,容器應用每每須要寫入文件數據,容器引擎爲此需再建立一個可寫層,加在鏡像的只讀文件系統上面。使用分層的容器鏡像以後,鏡像的下載和傳輸更加便利,由於只須要在宿主機上把缺乏的鏡像文件層次下載便可,無需整個鏡像傳送。
在Linux中,聯合文件系統UnionFS可以把多個文件層疊加在一塊兒,並透明地展示成一個完整的文件系統。常見的聯合文件系統有AUFS(AnotherUnion File System),btrfs,OverlayFS和DeviceMapper等。
容器運行時引擎和容器鏡像二者的關係相似於虛擬化軟件和虛擬機鏡像的關係。容器運行時引擎的技術標準主要是由OCI基金會領導社區進行制定。目前OCI已經發布了容器運行時引擎的技術規範,並承認了runC(Docker公司提供)和runV(Hyper公司提供)兩種合規的運行引擎。
容器編排工具經過對容器服務的編排,決定容器服務之間如何進行交互。容器編排工具通常要處理如下幾方面的內容:
1)容器的啓動。選擇啓動的機器、鏡像和啓動參數等;
2)容器的應用部署。提供方法對應用進行部署;
3)容器應用的在線升級。提供方法能夠平滑地切換到應用新版本。
容器的編排通常是經過描述性語言YAML或者JSON來定義編排的內容。目前主要的編排工具備Docker compose和基於Google的Kubernetes helm等。
容器集羣是將多臺物理機抽象爲邏輯上單一調度實體的技術,爲容器化的應用提供資源調度、服務發現、彈性伸縮、負載均衡等功能,同時監控和管理整個服務器集羣,提供高質量、不間斷的應用服務。容器集羣主要包含如下技術:
資源調度:主要以集中化的方式管理和調度資源,按需爲容器提供 CPU、內存等資源;
服務發現:經過全局可訪問的註冊中心實現任何一個應用可以獲取當前環境的細節,自動加入到當前的應用集羣中;
彈性伸縮:在資源層面,監控集羣資源使用狀況,自動增減主機資源;在應用層面,可經過策略自動增減應用實例來實現業務能力的彈性伸縮;
負載均衡:當應用壓力增長,集羣自動擴展服務將負載均衡至每個運行節點;當某個節點出現故障,應用實例從新部署運行到健康的節點上。
容器技術在構建自動化運維場景中,服務註冊和發現是重要的兩個環節,通常經過一個全局性的配置服務來實現。其基本原理相似公告牌信息發佈系統,A 服務(容器應用或者普通應用)啓動後在配置服務器(公告牌)上註冊一些對外信息(好比IP和端口),B服務經過查詢配置服務器(公告牌)來獲取A註冊的信息(IP和端口)。
熱遷移(Live Migration),又稱爲動態遷移或者實時遷移,是指將整容器的運行時狀體完整保存下來,同時能夠快速地在其餘主機或平臺上恢復運行。容器熱遷移主要應用在兩個方面:一是有多個操做單元執行任務,熱遷移能迅速地複製與遷移容器,作到無感知運行做業;二是能夠處理數據中心中集羣的負載均衡,大量數據涌來沒法運行計算時,可利用熱遷移建立多個容器處理運算任務,調節信息數據處理峯谷,配置管理負載均衡比例,下降應用延遲。
虛擬化是雲計算的重要基礎,容器定義了一套從構建到執行的標準化體系,改變了傳統的虛擬化技術,深度影響了雲計算領域,容器是雲計算的將來。以Docker 爲表明的容器技術愈來愈深入地影響雲計算,也改變咱們的平常開發、運維和測試。相比於虛擬機,容器的輕量、快速啓動和低開銷,以及基於此的按業務打包和微服務模式,這些特色被用來改進 DevOps,不少場景下更適合作大規模集羣管理和搭建靈活的分佈式系統。經過深度整合了IaaS、PaaS 及容器技術,提供彈性計算、DevOps 工具鏈及微服務基礎設施等服務,幫助企業解決IT、架構及運維等問題,使企業更聚焦於業務,構建了新一代的雲計算生態體系。
大數據平臺若是能採用容器方式發佈,與Spark、Hadoop、Cassandra等相關技術的集成與對接,可下降整個系統的搭建難度,縮短交付和安裝週期,減小安裝失敗風險。容器化後,各種大數據平臺組件能夠輕鬆實現遷移的目的,也能實現多複本控制和高可用。
物聯網(IoT)技術發展突飛猛進,而容器技術恰好遇到這樣的機遇,將在幾個方面促進物聯網的發展。
首先,運用容器技術後,可經過容器封裝,可簡化下載、安裝部署、啓動和後續應用更新。這將大大加速物聯網應用開發部署。其次,容器技術還能夠知足物聯網在自動監控,集中式維護管理方面的需求。最後,數據採集端環境變幻無窮,若是須要手動適配工做量巨大,若是採用容器化技術,只要打包幾類典型的容器鏡像,如ARM,X86,x86_64等,就能夠事半功倍實現終端的發佈工做。
隨着容器部署規模的增大,跨主機、跨網絡的容器遷移成爲常態。而容器更多地關注於輕量化自己,對於網絡架構並無太多關注。過於複雜的體系結構和管理過程,容易讓整個容器網絡和系統陷入不可控的非穩定狀態。經過SDN和Overlay網絡結合,將控制轉發分離、集中控制管理理念應用於容器網絡,還能夠最大程度加強容器網絡的彈性伸縮能力和簡化網絡管理。
另外,SDN與容器的配合,是相得益彰、互相促進的。業界的SDN控制器和系統通常都比較龐大,安裝、運行都極爲複雜。經過Docker技術,可以實現SDN控制器的輕量級快速部署、安裝、運行。
最先的PaaS平臺方案初步解決了不少客戶對於應用彈性的需求,可是在容器技術以前,構建一套PaaS平臺面臨着組件多、量級大、改形成本高等挑戰,並且對於運行在不一樣 PaaS 平臺上的應用,很難避免應用對平臺的深度依賴。譬如,不一樣的PaaS平臺對彈性、高可用、性能、監控、日誌、版本更新等的實現方式不一樣,則對其上應用的架構要求也不一樣;另外,在編程語言和技術棧方面,也會致使應用對平臺供應商的深度綁定。總之,在傳統PaaS平臺面前,咱們在開發應用時不得不配合平臺的要求。
而容器技術的出現,很好的解決了上述問題。容器是以應用爲中心的虛擬化環境,與編程語言、技術棧無關,比傳統PaaS靈活;對應用的支撐也比底層平臺多,能夠發揮微服務架構的優點。同時,容器是基於輕量級虛擬化的技術,天生具備高密度的特性,能夠更加高效地使用資源。
互聯網和海量數據正之前所未有的增加趨勢衝擊着整個數據中心行業,隨着互聯網、電子商務、社交網絡、移動辦公等互聯網應用的迅速發展,傳統數據中心逐漸難以知足新業務的發展需求,傳統數據中心面臨不匹配業務的靈活變化、能耗高、運維難、密度低、不知足雲和虛擬化彈性伸縮場景,也面臨着應用的快速、批量、移動部署慢等問題。
軟件定義數據中心負責將存儲、計算、網絡資源依據策略進行自動化調度與統一管理、編排和監控,同時根據用戶需求造成不一樣的服務並提供計費等功能。容器技術可充分利用底層的各項計算、存儲和網絡資源,靈活構建容器應用,實現具有應用輕量級的容器承載能力、應用集羣的鬆耦合和資源動態彈性伸縮的能力、實現可視化運維和自動化管控的能力、實現平臺自動化部署和升級的能力,從而解決了容器平臺對基礎設施資源調用的需求,容器平臺將數據中心轉化成爲一個更加靈活高效的業務應用平臺,其開放性和兼容性契合了數據中心對異構、大規模、可移植、互操做等方面的需求,容器技術爲雲計算的實施提供了強有力的支撐。
傳統IaaS在應用過程當中面臨運維方面的問題,傳統IaaS服務沒有從根本上加速企業內部的開發運維效率,更多的主要是體現對於IT部門的技術優化和提高必定的運維能力,運維和開發人員之間依然存在傳統IT手段一樣的溝通成本。容器技術三個方面的優點能夠有助於解決傳統IaaS面臨的問題。首先,容器的本質是一種操做系統級別的虛擬化,啓動一個應用容器其實就是啓動一個進程,所以使得容器佔用空間小、資源利用率高、自己很是輕,執行起來效率較高。這些是容器技術與傳統虛擬機技術的最大差異。其次,容器技術使用鏡像方式可以將應用程序和它依賴的操做系統、類庫以及運行時環境總體打包,統一交付,使得運維壓力大大下降。最後,容器技術與底層所使用的平臺無關,容器能夠在Linux平臺各發行版上兼容,這意味着應用架構一旦轉換爲容器化而且遷移部署以後,就能夠在任何雲平臺之間無縫遷移。
傳統軟件架構特性是單體應用,開發週期至少以月爲單位進行發佈和升級,代碼通常使用一種語言開發,不一樣的組件緊耦合,常常依賴於公共的庫,部署週期以月爲單位,部署依賴人工操做,組件版本複雜,操做風險高,時間管理成本均居高不下。
將容器技術引入到開發和運維環節具備如下幾個方面的優點:一是提供了交付環境一致性。從開發到運維的工做流程中,因爲基礎環境的不一致形成了諸多問題,但經過使用容器技術在不一樣的物理設備、虛擬機、雲平臺上運行,將鏡像做爲標準的交付物,應用以容器爲基礎提供服務,實現多套環境交付的一致性;二是提供了快速部署。工具鏈的標準化將DevOps所需的多種工具或軟件進行容器化,在任意環境實現快速部署。三是輕量和高效。與虛擬機相比,容器僅須要封裝應用及相關依賴文件,更加輕量,提升資源利用率。所以企業經過容器技術進行DevOps的實踐,可較好的縮短軟件發佈週期,提高產品交付迭代速度,提升生產效率。
快速部署:
使用容器可以利用鏡像快速部署運行服務,可以實現業務的快速交付,縮短業務的上線週期,極大地方便運維人員的上線部署工做。
彈性伸縮:
使用容器技術,當遇到高併發、高流量的大活動,容器作到根據業務的負載進行彈性擴容,以提供更好的服務。當訪問量下降後,容器平臺可以自動縮容,及時釋放空閒資源。
可移植性:
容器能夠運行於Linux、Unix、Window的操做系統之上,能夠利用容器將服務移植到不一樣的操做系統環境下運行。
輕量:
相比傳統虛擬機,容器更加輕量,資源消耗更低,鏡像體積更小。
高可用:
容器運行的業務一般由一組容器來提供服務,容器平臺的服務發現功能能夠保證容器實例的副本數量即便在某個主機宕機的狀況下也能維持不變。保證服務可以正常提供服務。
資源利用率高:
容器較傳統虛擬化有更低資源使用粒度,在一臺物理機上可運行上百個容器服務,從而提升服務器硬件資源的利用率。
快速構建開發環境:
開發應用除去自身編碼工做以外,還須要額外的數據庫、緩存或消息隊列等組件在本地進行測試,使用容器技術能夠快速完成構建,省去了設備申請、採購的流程,簡化了開發者組件安裝工做,提升了開發效率。
提供一致性的開發環境:
採用容器鏡像技術,只須要一次構建就能夠實如今不一樣的項目成員之間快速複製出一套徹底一致的開發環境,從而消除因環境異構而致使的不一致性,下降軟件缺陷出現的機率。 同時,在開發環境和測試環境中使用一樣的鏡像,也能保證開發和測試環境的一致性,提早發現軟件缺陷,減小對因環境不一致而致使的缺陷的調查成本。
方便開發環境版本管理:
經過對應用程序鏡像的版本化管理,能夠實現同一套應用程序的多版本共存,尤爲是存在對某些組件多版本支持的狀況下,經過容器技術,能夠輕鬆支持該組件的多個版本。 對應用程序容器的版本化,在應用程序自己存在多版本的狀況下,開發者還能在快速進行版本回溯,提升問題調查和缺陷修復的效率;在發佈失敗時,也能快速回滾。
容器技術與在應用過程當中須要與如下幾個方面技術進行集成才能在各應用場景中進行應用。一是與IaaS管理平臺集成。若是容器選擇在VM中運行,就須要與VM的管理平臺進行對接。在私有云場景下須要對接例如OpenStack(容器技術與OpenStack技術集成具體可參考附錄C)、VMware產品;在公有云場景下,須要與公有云服務提供商,例如阿里雲、百度雲、AWS等公司提供的VM進行集成。二是與開發工具集成。開發工具相關技術的集成是構建持續集成、持續發佈以及DevOps環境的必須條件,目前比較經常使用的開發工具包括Jenkins、Shippable(for Docker)等。三是與網絡進行集成。不一樣的應用運行於容器集羣時有網絡的互通需求,所以容器技術在具體場景應用時須要與網絡二層或三層功能模塊進行集成,以達到互通。四是與存儲管理模塊集成。存儲是應用數據存儲的必備,不一樣的存儲在性能、存儲空間、易用度等方面差異較大,若是要支持更多的應用,容器平臺須要內置外部存儲管理插件,與存儲平臺進行集成。
容器技術擁有快速擴展、靈活性和易用性等諸多優點,但在容器應用過程當中會遇到如下幾個方面的問題:一是兼容性方面,容器版本在快速更新中,以Docker 相關技術爲例,每隔1-3個月左右就有版本的升級,一些核心模塊依賴於高版本內核,運維時存在版本兼容問題。二是目前容器技術沒有統一的標準,例如:在容器層面有Docker Container、Mesos Container、rkt、CRI-O等衆多容器技術產品;此外,Google 雖然在聯合容器業界相關的廠商制定標準,但目前也未在容器方面進行徹底的統一。三是管理容器環境和應用也較爲複雜,不只須要多類技術支撐,包括容器管理、編排、應用打包、容器間的網絡、數據快照等,還須要增長對容器的監控。四是容器在應用過程當中還須要考慮在容器間、容器與系統間的性能隔離,內核共享帶來的安全隔離問題。五是在使用習慣角度上,容器使用習慣會有別於主機或虛擬機,容器技術在應用過程當中大部分用戶須要逐步引導才能適應容器的使用方式。