何莉 孫雅妮 王海沛



摘要:21世紀,以ABC(A:人工智能,B:大數據,C:云計算)形成的新業態,新體系,新技術為代表的新互聯網的運行生態模式,使得中小企業上云已是常態化事件。其中云原生技術,容器技術的出現使得DEVOPS出現了新的解決方案,為運維和開發之間的新建了一座橋梁,從此其快速的部署方式為上層用戶服務。該論文是以云計算技術中的容器技術為研究對象,研究分析了容器在目前大的互聯網背景下的應用特點以及與傳統虛擬化技術的主要區別。
關鍵詞:容器技術;傳統虛擬化技術;研究分析
1 容器技術概述
隨著新技術不斷沖擊,不斷迭代更新,使得云計算技術已經成為現在以及未來技術當中的新基石,并且已經納入國家的新的基礎設施建設當中。面對中小企業上云的不斷增長,面對龐大的市場內在需求,我國的云計算產業也在蓬勃發展,其云原生的Docker容器技術也在云服務平臺中被大量使用[1-2]。
容器技術是繼傳統虛擬化技術(VM虛擬機為方案)發展之后的一種新型虛擬化技術解決方案,是云服務模式的一種新的PAAS。容器技術是一種輕量級內核的操作系統層虛擬化技術,進程資源的隔離和管理控制技術的解決方案主要是通過NameSpace和Cgroup實現。
容器之間資源獨立,互相隔離, 主要是基于細粒度的資源隔離為基礎,將業務資源對底層資源的利用率得到最大值。容器技術解決方案主要應用場景之一微服務領域,為微服務提供了良好的運行環境,大大提升了對微服務的運維管理效率,其中容器技術的主流代表Docker是容器技術解決方案典型的代表,相比較以虛擬機為單位的解決方案的技術更趨向于標準化和歸一化。
代表性方案Docker技術,助推了容器技術的發展,Docker最初是DotCloud公司的內部發起的一個項目,主要是做云服務的PAAS層服務,該服務當時云服務領域當中的一次革新,使得云服務解決方案有了新鮮的血液,底層資源的利用率突破了新高。DOCKER的核心思想是利用擴展的LINUX容器方案實現一種輕量化的虛擬化解決方案,實現將服務器上層的服務(app)打包、封裝、集成、標準化供用戶使用,使得服務的部署變得簡單化和智能化,繼而解決和服務于開發人員與運維人員[3-4]。
Docker是C/S的架構,Docker客戶端DOCKER Daemon(守護進程)進行交互,DAEMON負責構架、運行和發布容器。客戶端和服務端運行在同一個系統中,也可以連接遠程的DAEMON,如圖1所示(圖來自于Docker官網)。
Docker作為一個虛擬環境容器服務,其實現的思想主要為解決DEVOPS(開發+運維)之間的故事,Docker可以將開發人員的代碼、運行環境、配置文件共同打包并發布,并且跨平臺運行。實現運維和開發的一鍵化部署,到處運行。
2 Docker容器技術主要包含三要素:鏡像,容器和倉庫
鏡像(IMAGE)是一個只讀鏡像模板文件,是基于分層文件系統的思想實現[5]。Dockerfile指令定義了Docker鏡像的文件內容。Docker鏡像的定義是從底層的基礎鏡像(BaseImage)開始,逐層開展的。鏡像構建實際上就是安裝、配置和運行的過程,鏡像的實現機制主要基于分層文件系統的原理機制。Docker鏡像基于UNIONFS把以上過程進行分層(Layer)存儲,便于鏡像的更新,只需更新變化部分的內容。
容器是一個鏡像運行中的實例,是動態的中的鏡像,容器由鏡像創建,運行用戶指定的指令或者Dockerfile定義的運行指令,可以將其啟動、停止、刪除,而這些容器是相互隔離的(獨立的進程),互不可見。
倉庫:Docker倉庫是Docker鏡像存儲的地方,稱為Docker鏡像倉庫,鏡像倉庫注冊服務器存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(Tag),鏡像通過標簽識別版本。Docker倉庫分為公有倉庫和私有倉庫。最大的公有倉庫是DockerHub,Docker hub存放了數量龐大的鏡像供用戶下載。由于DOCKER HUB的服務器在國外,訪問、下載比較慢,因此國內多家公司將Docker HUB中的鏡像完全復制了一份,由此國內用戶獲取鏡像速度加快。比如我們經常用到的國內鏡像倉庫:阿里云、網易云等。
Docker三要素三者之間的關系:OCKER鏡像是靜態的文件,容器是運行中的鏡像,倉庫是存儲鏡像的地方。
3 容器編排
在多主機的集群環境中對容器的生命周期管理,就需要容器編排工具,其Docker Compose是Docker容器進行編排的工具,定義和運行多個容器的應用,可以以一條命令啟動多個容器。采用Docker compose工具代替了shell腳本的集中化管理多個容器的工具。
Docker Compose是Docker官方旗下的一個開源項目,可以批量化管理多個容器的載體平臺,管理的機制是將任務代碼寫入到一個yaml文件當中,該文件中的所有容器通過服務Services來定義,然后使用Docker -Compose腳本來啟動、停止、重啟應用和應用中的服務以及所有依賴服務的容器,適用于運行多容器的場景。
4 Docker的優勢
Docker與傳統虛擬化技術對比:
Docker作為云計算當中的一種輕量化的虛擬化解決方案,與KVM、VMwareVSphere等主流虛擬化技術在實現原理方面有很大的不同。傳統虛擬化解決方案的實現是以虛擬機(VM)為單位,其技術可以直接作用于裸金屬層面,也可以寄居在宿主機的操作系統層面,也可以集成在內核態當中,而容器Docker技術的實現是直接安裝在宿主機的操作系統層面,與宿主機共享內核,并且最終實現的服務是以打包、集成、封裝好的鏡像文件,鏡像文件為用戶提供所需的進程服務,針對性很強,可實施性很簡單,為互聯網界的部署,運維和開發開通了一條綠色通道。下表展示了傳統虛擬化解決方案與容器技術Docker的異同。