999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

云計算虛擬化技術的發展與趨勢

2017-06-27 08:10:42武志學
計算機應用 2017年4期
關鍵詞:資源用戶服務

武志學

1.成都五舟漢云科技有限公司,成都 611731; 2.成都信息工程大學 信息安全工程學院,成都 610225)(*通信作者電子郵箱zhixue.wu@gmail.com)

云計算虛擬化技術的發展與趨勢

武志學1,2*

1.成都五舟漢云科技有限公司,成都 611731; 2.成都信息工程大學 信息安全工程學院,成都 610225)(*通信作者電子郵箱zhixue.wu@gmail.com)

云計算是一種融合了多項計算機技術的以數據和處理能力為中心的密集型計算模式,其中以虛擬化、分布式數據存儲、分布式并發編程模型、大規模數據管理和分布式資源管理技術最為關鍵。經過十多年的發展,云計算技術已經從發展培育期步入快速成長期,越來越多的企業已經開始使用云計算服務。與此同時,云計算的核心技術也在發生著巨大的變化,新一代的技術正在改進甚至取代前一代技術。容器虛擬化技術以其輕便、靈活和快速部署等特性對傳統的基于虛擬機的虛擬化技術帶來了顛覆性的挑戰,正在改變著基礎設施即服務(IaaS)平臺和平臺即服務(PaaS)平臺的架構和實現。對容器虛擬化技術進行深入介紹,并通過分析和比較闡述容器虛擬化技術和虛擬機虛擬化技術各自的優勢、適應場景和亟待解決的問題,然后對云計算虛擬化技術的下一步研究方向和發展趨勢進行展望。

云計算;虛擬化;Docker;容器;虛擬機

0 引言

云計算是一種融合了多項計算機技術的以數據和處理能力為中心的密集型計算模式。它的發展是虛擬化、分布式系統、分布式并發編程模式、面向對象的體系架構、軟件即服務和信息安全等各項技術共同發展的結果;同時,托管服務、后向收費、按需交付等商業模式的出現也加速了云計算市場的突飛猛進。

經過十多年的發展,云計算技術已經趨于成熟,云計算平臺產品也得到了企業的認同和廣泛使用。與此同時,云計算的核心技術的發展并沒有停止。特別是在近兩年里,基于容器技術的Docker系統[1]、基于糾刪碼技術[2]的分布式存儲系統和基于內存計算的Spark系統[3]的出現顛覆了原有的虛擬化技術、基于多副本的分布式數據存儲技術,以及基于MapReduce的分布式并發編程模型。這些新技術不僅進一步提高了資源利用率,提高了云平臺的計算速度,并且還為企業提供了更多的大數據應用模型,包含批處理、實時數據處理、流式數據處理、隨機數據查詢和數據挖掘等。

容器虛擬化技術以其輕便、靈活和快速部署等特性給傳統的基于虛擬機的虛擬化技術帶來了顛覆性的挑戰。容器技術正在改變著基礎設施即服務(Infrastructure as a Service, IaaS)平臺和平臺即服務(Platform as a Service, PaaS)平臺的架構和實現。本文首先對容器虛擬化技術進行深入介紹;然后對容器虛擬化技術和虛擬機虛擬化技術進行分析和比較,闡述各自的優勢、適應場景和亟待解決的問題;最后對云計算虛擬化技術的下一步研究方向和發展趨勢進行展望。

1 虛擬化技術

云計算模式最關鍵的突破就是資源使用方式的改變[4]。通過虛擬化的方式,可以在幾分鐘之內,虛擬出一個獨立的、隨需配置的虛擬機供用戶使用。虛擬化技術給資源使用和調度帶來了極大的方便,系統可以根據應用的實際負載情況及時進行資源調度,從而可以保證既不會因為資源得不到充分利用造成系統資源的浪費,又能夠保證應用和服務不會因為資源缺乏而帶來性能的下降。

虛擬化技術是指計算元件在虛擬的基礎上而不是真實的基礎上運行,通過軟件的方法重新定義劃分信息技術(Information Technology, IT)資源,實現IT資源的動態分配、靈活調度和跨域共享,從而提高IT資源的利用率,使IT資源真正成為計算基礎設施,可以滿足各種應用的靈活多變的需求。

受益于虛擬化技術的發展,計算機整體資源的使用效率和用戶工作的時間價值都得到了巨大的提升,同時也相應減少了交付服務所做的重復性工作。通過虛擬化技術,云計算把計算、存儲、應用和服務都變成了可以動態配置和擴展的資源,從而才能夠實現在邏輯上以單一整體的服務形式呈現給用戶。所以,虛擬化技術是云計算中最關鍵、最核心的技術原動力[5]。

1.1 服務器虛擬化

服務器虛擬化是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。服務器的虛擬化是通過在硬件和操作系統之間引入虛擬化層實現硬件與操作系統的解耦而實現的,如圖1所示。虛擬化層的主要功能就是實現在一臺物理服務器上同時運行多個操作系統實例。通過動態分區,虛擬化層使這些操作系統實例可以共享物理服務器資源,使每個虛擬機得到一套獨立的模擬出的硬件設備,包含CPU、內存、存儲、主板、顯卡、網卡等硬件資源。然后,再在其上安裝自己的操作系統,稱為客戶(Guest)操作系統。最終用戶的應用程序,運行在Guest操作系統中。

圖1 服務器虛擬化

服務器虛擬化有兩種常見的架構:寄居架構(Hosted Architecture)和裸金屬架構(“Bare Metal” Architecture)。寄居架構將虛擬化層運行在操作系統之上,當作一個應用來運行[6]。寄居架構依賴于主機操作系統對設備的支持和物理資源的管理,如圖2(a)所示;裸金屬架構直接將虛擬化層運行在x86的硬件系統上,再在其上安裝操作系統和應用,如圖2(b)所示。因為裸金屬架構可以直接訪問硬件資源,而不需要通過操作系統來實現對硬件訪問,因此具有更高的效率。 VMware Server是寄居架構虛擬化產品的代表;而Xen[7]、XenServer[8]、VMware ESX Server[8]和KVM[9]都是基于裸金屬架構的虛擬化產品。

圖2 服務器虛擬化架構

1.2 Docker容器技術

通過解除操作系統與物理主機之間的緊耦合,虛擬機虛擬化技術使操作系統的部署更為輕松便捷,工作負載的移動性顯著增強。通過虛擬化的方式,可以很快虛擬出一個小的、獨立的、隨需隨用CPU內核供用戶使用。但是,當用戶僅僅需要使用一小部分資源去運行一個很簡單的應用時,虛擬出一整臺計算機來完成軟件發布不但會浪費相當的系統資源,并且啟動虛擬機運行也需要幾分鐘的時間。因此,需要一種比虛擬機更小的資源分配粒度來滿足這類需求。

為了能夠比虛擬機模式以更快、更少資源的方式發布軟件,就需要對資源進行比虛擬機模式更高級別的抽象,使得服務可以通過更細的粒度對資源進行分配和控制。為此,Linux內核添加了新的技術,這便是眾所周知的控制組(Control Groups, cgroups)[10]。 通過這一技術來對服務運行時環境進行隔離,這種被隔離起來的運行時環境就被稱為容器[11]。

通過容器可以為應用程序提供一個隔離的運行空間,包括完整用戶環境空間;一個容器內的變動不會影響其他容器的運行環境。所以,可以使用容器虛擬化技術將應用組件以及依賴打包為一個標準、獨立、輕量的環境,來部署分布式應用,從而滿足上述需要比虛擬機更小粒度來控制資源的需求。

容器技術使用了一系列的系統級別的機制,包括利用Linux namespaces來進行空間隔離,通過文件系統的掛載點來決定容器可以訪問文件的權限,通過cgroups來控制每個容器可以利用多少資源。此外,多個容器之間可以共享同一個操作系統的內核,這樣當同一個系統庫被多個容器使用時,內存的使用效率會得到很大的提升。

Docker是一個可以簡化和標準化不同環境中應用部署的容器平臺,目前已經有很多的分布式容器管理相關的生態圈軟件。近幾年以來,隨著Docker的出現,容器技術對云計算發展產生了巨大的影響。

1.2.1 Docker

Docker誕生于2013年,最初是dotCloud公司內部的一個業余項目[12]。項目后來加入Linux基金會以后成為了一個遵從Apache 2.0協議的開源項目。Docker自開源后受到廣泛的關注和討論,dotCloud公司已經改名為Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛使用了Docker技術。

Docker項目的目標是實現輕量級的操作系統虛擬化解決方案,基于Google公司推出的Go語言實現。 Docker以Linux容器(LXC)技術為基礎,它的主要功能是通過實現對LXC的進一步封裝,使得對容器的操作變得更為簡便,并且讓用戶不再需要關心容器的管理[13]。用戶使用Docker平臺上的容器就像操作一個輕量級的虛擬機一樣簡單。正是因為使得操作LXC變得簡單和方便使用,Docker帶來了容器虛擬化進入云計算產品的熱潮。

為了讓Docker朝著容器封裝、運行的標準化更進一步,2016年發布的Docker 1.10推出了自己的libcontainer,它集成了Linux內核中的很多特性,作為一個獨特、穩定且不受制于Linux的library[14]。

與提供硬件虛擬化機制的虛擬機不同,Docker通過命名空間(namespaces)和控制組(cgroups)兩個核心技術提供操作系統層級的虛擬化機制。Docker利用namespaces進行權限的隔離控制;利用 cgroups進行資源的限制隔離。

Docker利用namespaces技術[13]來提供隔離的工作空間,稱之為容器(Container)。當運行一個容器時,Docker為該容器創建了一個命名空間集合。這樣就給容器提供了一個隔離層,每一個應用在它們自己的命名空間中運行而且不會訪問到命名空間之外。

Docker利用cgroups技術對共享資源進行隔離、限制、審計等,確保Docker容器只使用其必需的資源,并在必要情況下設置其所能使用的資源上限。另外,cgroups還能夠確保單一容器不至于占用太多資源而導致整體系統陷入癱瘓。

圖3顯示了容器虛擬化的整體架構,可以看到容器和宿主機的關系,容器隔離獨立的應用并使用已經被Docker抽象化的操作系統資源。在圖3的右側視圖中,可以看到容器是用層(layer)來建立的,多個容器共享基礎層以減少資源的使用。

圖3 容器虛擬化架構

1.2.2 Docker的工作原理

Docker的實現機制包含大量活動組件,其底層的核心技術包括 Linux 上的命名空間(Namespaces)、控制組(Control Groups)、Union文件系統(Union File Systems)和容器格式(Container Format)。

傳統的虛擬機是通過在宿主主機中運行Hypervisor來模擬一整套完整的硬件環境提供給虛擬機的操作系統使用。虛擬機系統看到的環境是可限制的,也是彼此隔離的。這種實現方法可以對資源進行最完整的封裝,但同時又意味著對系統資源的浪費。 例如,在宿主機和虛擬機系統都為Linux系統的情況下,虛擬機中運行的應用其實完全可以利用宿主機系統中的運行環境。

操作系統包括內核、文件系統、網絡、PID(Process ID)、UID(User Identification)、IPC(Inter Process Communication)、內存、硬盤、CPU 等資源,所有這些資源都是應用進程直接共享的。因此,要實現虛擬化,首先需要實現對內存、CPU、網絡IO、硬盤IO、存儲空間等的限制,此外還需要實現對文件系統、網絡、PID、UID、IPC等之間的相互隔離。實現前者相對來講要容易一些,而實現后者則需要宿主機系統的深入支持。

近年來,隨著Linux系統對名字空間功能實現的不斷完善,基本上已經可以實現上面的所有需求,進程可以在彼此隔離的命名空間中運行。盡管多個進程都在共享同一個內核和部分運行時環境(例如一些系統命令和系統庫),但是進程相互之間是不可見的,都感覺系統中只有自己單獨存在。這種機制就是容器(Container)技術。

1)命名空間。

命名空間是 Linux 內核一個強大的特性。Docker使用命名空間來實現容器之間的隔離。每個容器都有自己單獨的命名空間,運行在其中的應用都像是在獨立的操作系統中運行一樣。命名空間為容器提供對應的底層Linux系統視圖,即限制容器的查看與訪問范疇。為了給每個運行的容器提供一個獨立的運行環境,Docker會創建一組命名空間來供特定的容器使用。

Docker會在內核中使用多種不同類型的命名空間,實現對不同系統資源的隔離,包含:

pid命名空間:用來進行進程隔離PID,使兩個不同命名空間下的進程可以有同一個PID。

net命名空間:用來管理網絡接口NET(Networking),主要提供對網絡資源的隔離,包括網絡設備、IPv4和IPv6協議棧、IP路由表、防火墻、/proc/net目錄、/sys/class/net目錄、端口(socket)等。

ipc命名空間:用來管理進程間通信資源IPC,負責對運行在每套容器內的進程進行IPC資源隔離。

mnt命名空間:用來管理掛載點MNT(Mount),使不同mount命名空間內的進程擁有彼此不同的文件系統結構。

uts命名空間:用來隔離內核和版本標識UTS(Unix Timesharing System),允許容器擁有不同于其他容器以及主機系統的主機名稱與網絡信息服務(Network Information Service, NIS)域名。

user命名空間:用來對每套容器內的用戶進行隔離,允許各容器擁有不同的uid(UserID)與gid(Group ID)視圖區間,使得某一進程的uid與gid在用戶命名空間之內與之外即有所不同,從而使得該進程能夠在不影響容器內root權限的情況下,撤銷同一用戶在容器外的權限。

Docker將這些命名空間結合起來完成隔離并創建容器。每個容器都有自己單獨的名字空間,保證了容器之間彼此互不影響。運行在名字空間中的應用都像是在獨立的操作系統中運行一樣。

2)控制組。

控制組(cgroups)是Linux內核提供的一種機制,主要用來限制、記錄、隔離進程組所使用的物理資源(包括:CPU、內存、磁盤IO等)。cgroups為容器實現虛擬化提供了基本保證,是構建Docker虛擬化管理工具的基礎。只有能夠對分配到容器的資源進行控制,才能夠避免當多個容器同時運行時對系統資源的競爭。也就是說,cgroups能夠確保Docker容器只能使用分配給它的資源,并在必要情況下設置其所能使用的資源上限。另外,cgroups還能夠確保不會因為單一容器占用太多資源而導致整體系統陷入癱瘓。

3)Union文件系統。

Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下[16]。Union 文件系統是Docker鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像,通過分層疊加制作各種具體的應用鏡像。所以,使用Union文件系統,不同Docker容器可以共享一些基礎的文件系統層,同時再加上自己獨有的改動層,從而大大提高了存儲的效率。Docker鏡像層次如圖4所示。

圖4 Docker鏡像層次

2 Docker容器與虛擬機對比

容器在外觀上與虛擬機非常相似,二者皆擁有專有處理空間,能夠作為root執行命令,提供專有網絡接口與IP地址,允許定制化路由及iptable規則,且可啟動文件系統等。但是,容器與虛擬機之間存在著本質的差別:容器是在操作系統層面上實現虛擬化,每個容器擁有自己獨立的運行空間,但是不單獨擁有操作系統,而是直接復用本地主機的操作系統;而虛擬機則是在硬件層面實現虛擬化,每個虛擬機擁有自己獨立的操作系統。架構對比如圖5所示。

圖5 虛擬機架構與Docker架構對比

圖5(a)顯示在服務器虛擬化技術下,每個虛擬機不但包括應用本身和必須的二進制文件與代碼庫,并且還需要包括整個客戶操作系統。一般來講,應用代碼只有幾十MB大小。但是,客戶操作系統有時會多達幾十GB大小。

圖5(b)顯示了Docker對“用戶空間”進行打包的方式。與虛擬機不同,容器唯一需要獨立構建的只有二進制文件與代碼庫,而全部操作系統層級的架構都可實現跨容器共享。由此可見,Docker擁有極為出色的輕量化特性,同時還享受與虛擬機一樣的資源隔離與分配的好處。

2.1 Docker的優勢

Docker是一種新興的虛擬化方式,與傳統的虛擬化方式有著本質的差別,更具有眾多的優勢。首先,Docker容器的啟動速度要比虛擬機方式快很多,可以在秒級實現;而虛擬機的啟動時間一般會需要幾分鐘時間。其次,Docker對系統資源的利用率也要比虛擬機高很多,一臺主機上同時運行Docker容器的數量可以高達數千個;而一臺主機上僅能夠運行幾十個虛擬機。容器運行時基本不消耗額外的系統資源,只需要運行其中的應用,所以使得系統的開銷很小,應用的性能很高。如果用戶需要運行10個不同的應用,采用傳統虛擬機方式,一般來講就需要啟動10個虛擬機;而采用Docker容器只需要啟動10個隔離的應用即可。

具體說來,Docker在如下幾個方面具有較大的優勢:

1)簡化部署。使用Docker技術,開發者可以使用一個標準的鏡像來構建一套開發容器。開發完成之后,運維人員就可以直接把這個容器部署到運行環境而不需要重新安裝。不論需要把服務部署到哪里,容器都可以通過一行命令就完成部署,從而在根本上簡化了部署應用的工作。

2)快速可用。Docker容器很輕快。容器技術是對操作系統的資源進行再次抽象,而并非對整個物理機資源進行虛擬化。通過這種方式,打包在容器內的服務可以在1/20 s的時間內快速啟動,而啟動一臺虛擬機一般可能需要一分鐘的時間。

3)更高效的虛擬化。Docker 容器是內核級的虛擬化,運行時不需要額外的hypervisor支持。因此,Docker容器可以實現更高的性能和效率,可以非常接近裸機的性能。

4)微服務化。容器允許對計算資源進行比虛擬機更小粒度的細分。如果相對于服務運行所需要的資源來講,一個小型的虛擬機所提供的資源過于龐大,或者對于用戶的系統而言,一次性地擴展出一臺虛擬機會所需要工作量很多,那么容器可以很好地解決這類問題。

5)更輕松的遷移和擴展。Docker容器可以在各類平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等。 這種廣泛的兼容性可以讓用戶很方便地把一個應用程序從一個平臺直接遷移到另外一個平臺,不用擔心平臺鎖定問題。

6)更簡單的管理。使用Docker,可以通過微小的修改替代以往大量的更新工作。這些修改都可用增量的方式被分發和更新,從而實現代碼更新自動化,大大提高管理的效率。

2.2 Docker的劣勢

與任何技術一樣,Docker也不會是一個完美無缺的系統。相對于虛擬機來講,Docker還存在以下幾個劣勢需要作進一步改進:

1)資源隔離問題。

Docker是利用cgroup實現資源限制的,但是只能限制每個容器資源消耗的最大值,而不能隔絕其他程序占用自己的資源。也就是說,也許一個容器不能保證任何時候都能夠享受分配給它的資源。

比如說,系統給某個容器分配了4核CPU,但是由于系統負載在某個階段過高,該容器也許只能使用3核CPU。對于有些實時性要求不高的應用,短時間的資源短缺可以接受。而對于一些實時在線處理系統需要保證比較高并且一致的吞吐量,如果不能保證分配給它的系統資源的固定可用性,那么就不能滿足其實時性保證。

2)安全性問題。

安全性問題是容器技術的一個主要弱點,其資源隔離性沒有虛擬機那么徹底,也是阻礙容器技術在實際應用中普及的主要原因。

近年來,Docker也在不斷地通過技術來提高容器的安全性。在早期Docker版本中,只有具有root權限的用戶才能夠運行容器,這給容器使用帶來了潛在的安全問題。為了解決這個問題,Docker1.10引入了用戶命名空間功能。但是,Docker目前還不能分辨具體執行指令的用戶,只要一個用戶擁有執行Docker的權限,就可以對Docker的容器進行所有的操作,即使該容器不是由該用戶創建的,存在一定的安全風險。

總之,盡管當前的Docker版本已經在安全性方面有了很大的提高,但是相對于虛擬機來講,安全性問題仍然是Docker容器技術的一個主要弱點。不克服安全性方面的問題,容器技術就不能適用于實際行業應用。

3)容器管理需要強化。

因為其輕量快速的特點,容器多用于快速應用部署。每個容器往往只運行一個單一的系統軟件或者應用程序,所以,相對于虛擬機可以部署多個系統或應用的場景來講,容器管理平臺需要管理的容器的數量會遠遠多于虛擬機管理平臺需要管理虛擬機的數量。如何管理在一個物理服務器上運行的幾千個容器,而不是幾十臺虛擬機,具有一定的技術挑戰。

4)兼容性問題。

Docker目前還在版本的快速更新中,細節功能調整比較大,而一些核心模塊依賴于高版本內核,存在版本兼容問題。

5)Windows容器還不成熟。

Docker容器平臺是基于Linux內核技術開發的,只能適用于基于Linux系統開發的應用和服務,還不能支持Windows應用。

盡管微軟已經開始研發基于Windows操作系統的容器技術,但是與達到實用階段還有一定的距離。因此,在Windows系統方面,虛擬機仍然是解決應用快速部署的唯一選擇。

6)容器編排引擎還不成熟。

分布式應用部署不僅僅是簡單地啟動一個個裝有軟件的容器。應用組件之間需要通過網絡協議進行通信,因此在使用容器部署分布式應用時,需要設置容器之間的網絡接口。網絡設置一方面要保證容器之間能夠完成所需要的通信任務,另一方面還必須確保容器之間只能夠進行允許范圍內的通信,以便保證應用的安全性。

分布式應用各個組件的依賴性并不只限于網絡連接方面,各個組件之間還存在有服務依賴關系。比如說,一個Web應用系統中的Web服務器需要連接數據庫系統才能正常運行,所以,在啟動Web服務器之前,必須首先啟動數據庫系統。因此,在使用容器部署分布式應用時,必須保證裝有各種應用組件的容器有序啟動。這也需要容器編排引擎來保證。

目前,市場上比較活躍的編排系統有Google的Kubernetes、Mesosphere的Marathon和Docker的Swarm等。 Swarm為Docker容器提供集群功能,可以把多個容器引擎組成一個虛擬容器引擎;Kubernetes使Docker容器在Google的云平臺上運行,可以把容器編排成一個集群,并且可以根據用戶的需求管理容器的負載;Marathon是Apache Mesos的容器編排引擎,主要用來編排和管理長期運行的應用。這些容器編排引擎各有優勢,但是現在還沒有一個完全成熟能夠達到企業應用級。

3 Docker容器對云計算發展的影響

每一項新技術的出現都可能會對現有局面帶來顛覆性的影響。近兩年多來,以容器技術為核心的Docker引領了一場影響了整個IT界的技術革新,不僅在徹底改變著應用開發和發布的方式,并且改變著云計算領域的運行規則。從IaaS到PaaS,乃至大數據平臺,Docker已經給云計算技術實踐帶來了顛覆性的改變,并深深影響著云計算技術的發展前景。

3.1 容器即服務

基于虛擬機虛擬化技術的IaaS云服務已經進入成熟階段,人們可以從多個提供商的公有云中方便地獲取所需的計算資源和存儲資源,基本達到了云計算的“按需獲取、按量計費、彈性擴展”的目標。從IT管理角度來看,虛擬機提供了一流的資源隔離、安全性和穩定性。但是,旨在提供完整的操作系統的虛擬機虛擬化技術,對資源的分配粒度過大,無法提供最優的資源利用解決方案對外提供服務:一方面,每個虛擬機都需要包含完整的操作系統,而不能與其他虛擬機共享,因此浪費了大量的系統資源;另一方面,即使用戶只需要運行一個很簡單的應用,也需要使用一個完整的虛擬機。

Docker容器通過使用cgroups技術大大降低了控制系統資源的粒度, 從而大幅度地提高了對系統資源的利用率。一臺物理主機上只能運行幾十臺虛擬機,但是可以同時運行數千個Docker 容器。Docker容器從根本上克服了虛擬機技術的資源浪費問題。其次,Docker 容器的運行不需要額外的Hypervisor支持,它是內核級的虛擬化,因此可以實現更高的性能和效率,非常接近裸機的性能。此外,Docker容器的啟動比虛擬機要快得多,可以在秒級完成,而傳統的虛擬機方式需要幾分鐘時間才能啟動。

現階段的云計算是以虛擬機為核心,IaaS以虛擬機為提供計算資源的基本單元,PaaS以虛擬機為部署應用的基礎設施。隨著Docker容器技術的成熟,以容器為核心的云計算時代已經開始,容器即服務(Container as a Service, CaaS)把第一代云計算的IaaS層與PaaS層合二為一,成為了新一代的云計算架構[17]。基于CaaS的云計算架構賦予了企業強大的工業化生產通用軟件的能力,再根據消費者和用戶的個性化需求,快速組裝通用軟件形成個性化的解決方案,這就是下一代的云計算商業模式[18]。

在第一個云計算時代,企業主要享受了基于硬件的虛擬化為企業帶來的益處,企業可以像使用水、電、煤氣等公共服務一樣使用IaaS服務。而Docker的出現,使得IaaS服務提供商能夠以更細的粒度為企業提供計算資源。這不但可以進一步提高資源利用率,還可以縮短資源啟動時間,從而為進一步降低公有云服務的成本提供了可能。

現在的公有云提供商,比如Amazon AWS,除了提供虛擬機和存儲服務以外,還提供許多通用計算服務,如負載均衡、數據緩存、消息隊列和防火墻服務。現在公有云服務提供商完全可以將這些應用遷移到容器中,不但可以降低資源開銷,還可以提供更好的可移植性。

混合云是企業現在使用最多的一種云服務模式。使用混合云模式,企業可以根據實際需求,把應用運行在企業的數據中心或者公有云上。因為Docker容器相比傳統的虛擬機更輕量,所以可以進行動態的設置和遷移。所以,無論是從資源的利用率方面,還是從應用的遷移方便性而言,Docker容器都比虛擬機更適合部署在混合云中。

CaaS模式為企業帶來的另一個優勢就是CaaS使企業可以方便地、動態地在不同公有云平臺之間遷移服務,而不需要擔心平臺鎖定問題。企業可以很方便地跨IaaS平臺實現容器動態調度和移動。就像IaaS的用戶不需要關心其虛擬機使用的哪種虛擬化技術一樣,CaaS的用戶也不需要關心他們的容器到底是運行在哪個服務商的云平臺之上,是Amazon的AWS上、Microsoft的Azure上,還是阿里云上。客戶只需說明自己期望的應用部署的地理位置,以及他們想要的運行容器,CaaS服務提供商將為客戶提供自動化的編排程序幫助客戶進行資源調配,選擇最合適的云平臺,為用戶提供最優質的服務。

盡管CaaS這種基于IaaS之上提供Docker容器的商業模式剛出現不久,但Docker已經在云計算行業產生了巨大的影響力。Amazon的AWS、Microsoft的Azure和Google的云平臺都已經開始提供CaaS服務。隨著Docker容器技術和云平臺技術的不斷發展,今后,CaaS會在更多的企業,特別是企業的實際生產環境中發揮作用。CaaS會像IaaS一樣取得成功,并且會比IaaS使用得更廣泛。

3.2 基于容器的PaaS服務

相對于IaaS來講,Docker容器技術對于傳統PaaS更具顛覆意義。近年來IaaS技術取得了長足的發展,已經進入了成熟階段,但是PaaS的發展很不理想。現在的PaaS平臺,一類是提供一個共享的運行平臺,包括共享的數據庫系統、文件系統、Web服務器等,托管企業的應用。但是,企業必須基于PaaS平臺提供的新的存儲系統和數據庫系統重新實現自己的應用,而不能把原有的應用遷移到PaaS平臺。此外,因為不同企業的應用共享存儲系統和數據庫系統,如何保證用戶應用和數據的安全性具有相當的挑戰,安全性成為用戶使用PaaS平臺的一個巨大障礙。GAE(Google App Engine)和Microsoft的Azure和VMware基于開源平臺Cloud Foundry提供的PaaS服務都屬于這類PaaS平臺。

另外一類PaaS平臺只在云端提供一些常用的標準軟件系統實例供用戶使用,比如數據庫系統、消息隊列、負載均衡系統和數據緩存系統等。對于企業來講,并不能將IT系統整體都遷移到云端,其日常的開發、測試、部署、運維等,除了服務器位于云端之外,并沒有得到顯著的改善。Amazon的AWS提供的PaaS服務是這類PaaS的典型代表。

總之,云計算在PaaS層面還沒有達到為用戶提供按需獲取服務、按負載進行自動擴展的能力,企業還不能無需改變地把自己已有的應用遷移到云端,更無法動態地在企業數據中心和公有云平臺之間進行應用調度和遷移。

以位于操作系統之上的輕量級虛擬化方案和類似于軟件版本管理的鏡像管理模式等技術為核心,Docker的出現為PaaS平臺的實現提供了一條完全不同的路徑。不同于現有PaaS平臺為用戶提供一個具有新的存儲系統和數據庫系統的共享平臺,基于容器的PaaS平臺把用戶的每個應用部署到一個單獨的容器之中,用戶既不需要學習新的存儲系統和數據庫系統的使用,也不需要重新開發應用,還不需要擔心與其他用戶共享運行環境帶來的安全問題。

總之,容器可以很好地解決當前PaaS平臺遇到的問題,從而使云服務的提供者有能力提供真正達到云計算標準的PaaS服務。從這一層面來講,Docker的出現無疑對現階段云計算的服務能力從IaaS向PaaS層級的提升有著巨大的推動作用[18]。

當前PaaS服務的另一個問題就是平臺之間的不兼容問題。不同PaaS平臺都提供了自己的存儲系統和數據庫系統,用戶的應用必須使用這些PaaS平臺特有的系統才能正常運行。這就意味著運行在GAE平臺上的應用無法遷移到Azure平臺上,反之亦然。

造成PaaS平臺不兼容的主要原因有兩個:

第一個原因是企業應用從開發、管理和運維上都有各種個性化的需求,無法通過提供一個規范、一致的環境來滿足各類應用的需求。個性化需求和統一環境之間這種難以克服的矛盾影響了市場對PaaS的認可和接受。

造成PaaS平臺不兼容的另一個原因是因為每一個PaaS服務提供商都在為應用提供各自的服務和API,從而形成了平臺特有的運行環境,這就造成了應用很難在PaaS服務平臺之間進行移植。一些組織曾經在PaaS的遷移方面作了積極的努力,希望能夠降低企業向PaaS平臺遷移應用的難度,甚至希望能夠實現跨PaaS平臺的遷移。但是由于沒能得到類似GAE和Azure等主要PaaS服務提供商的支持,這些工作想成為事實上的行業標準很困難。

Docker的出現為PaaS平臺的實現提供了一條全新的途徑,也使為開發者提供更簡潔的服務成為了可能。目前,開源PaaS平臺Cloud Foundry已經開始支持并集成Docker容器。以Red Hat為首開發的OpenShift開源PaaS平臺就是基于Docker容器和Kubernetes編排引擎開發的。

基于Docker容器,開發人員不再需要花費大量精力來處理各種開發、測試和生產環境之間的差異,而直接將應用從開發環境遷移到PaaS平臺的運行環境,不必擔心各種依賴和配置問題。另外,開發者也不再需要為了能夠在PaaS平臺上運行自己的應用而學習額外的編程方式、新的API,他們的應用不需進行調整就可運行在PaaS平臺的Docker容器中。

使用Docker容器,開發者可用微服務的方式來實現他們的應用,將整個應用解耦為較小的功能組件,而容器將組件更進一步從底層的硬件中分離出來,獨立運行在一個容器中。通過使用微服務,應用程序可以得到更快的創建,更易于維護,還可以得到更高的質量。所以,Docker容器技術將會使PaaS平臺更容易管理,更快速地提供服務。

初期的Docker其實并沒有容器編排功能,不具備部署企業應用的能力。隨著Docker的快速成長,圍繞Docker的生態系統開始完善,多個容器編排引擎已經出現。由于Docker能夠運行在具有Linux內核的虛擬機中,所以它應該可用在大部分IaaS平臺上。2015年6月,Docker公司與Linux基金會推出的開放容器計劃(Open Container Initiative, OCI),包括Oracle、Microsoft、EMC、IBM、Cisco和VMware等在內的一大批國際著名軟件廠商的加入,使Docker生態圈開始迅速膨脹。目前,幾家著名的云服務提供商都已經宣布支持Docker及其生態系統。所以,Docker容器很有希望成為下一代通用型PaaS平臺的核心技術。

總之,Docker的出現已經對還不成熟的PaaS市場產生了巨大影響,顛覆了基于原有技術的PaaS平臺的演進,但同時卻加速了新一代基于Docker容器技術的PaaS平臺的發展。盡管目前Docker容器及其生態圈還不成熟,但是Docker容器通過容器虛擬化的方式提供了一個解決應用環境依賴和可移植性問題的完美方案,為PaaS平臺的實驗提供了一條全新的路徑。

4 容器的發展趨勢展望

Docker的出現給傳統的基于虛擬機的云計算發展帶來了強有力的沖擊,那么,是不是虛擬機技術就過時了,要讓容器徹底取代了?容器技術本身能不能以及如何解決目前仍然存在的問題?基于容器技術的云計算的下一步將朝著哪些方面發展,將會給云計算市場帶來哪些根本的變化?本章將針對這些問題來對容器的發展趨勢作一些預測和展望。

4.1 容器和虛擬化技術將會共存

容器和虛擬機的主要差別來源于容器提供了一種虛擬化操作系統的方法使得多個應用可以相互獨立地運行在一個操作系統實例上;而虛擬機則是提供了一種虛擬化硬件的方法使得多個操作系統可以相互獨立地運行在一個物理服務器上。盡管容器技術比虛擬機更輕便快速,并具有更好的可遷移性,但是由于容器本身的不完善性以及一些應用場合的特性,容器并不能夠完全代替虛擬機成為唯一的虛擬化技術。

首先,虛擬機的安全性要比容器強[19]。其主要原因是因為虛擬機之間是通過硬件實現隔離的,而容器之間共享操作系統和應用庫程序,因此容器可能受到的攻擊面要大于虛擬機的。第一,容器需要防止宿主操作系統不會被攻破。如果攻擊者能夠獲取訪問宿主操作系統,那么就會有機會攻擊運行在其上面的容器。第二,用來隔離容器的命名空間設施也是一個潛在的攻擊面。攻擊者可以通過運行在一個容器的應用去攻擊運行在同一臺宿主機上的其他容器。況且目前來講,還不是進程的所有屬性都通過命名空間進行了隔離,有些屬性還是在容器間共享。第三,操作系統暴露給容器的使用界面要遠遠大于虛擬機監控程序(Hypervisor)暴露給虛擬機的界面。任何系統調用方面的缺陷都有可能被攻擊者利用來攻擊操作系統。

盡管容器的安全性已經得到了一定的改善,但是現在還不能完全保證上述安全問題都得到了解決。對于安全性要求高的用戶場景來講,虛擬機仍然是更好的選擇。所以,公有云服務提供商還不能放棄提供虛擬機服務,從而導致所提供服務的適應面變窄。

其次,容器的整個生態鏈還不完善,用來對容器進行監控、管理和維護的工具還不成熟,而虛擬機經過二十多年的發展已經有了成熟的管理和控制工具生態圈。不管是容器還是虛擬機本身都不能夠保證應用可以作為產品的正常運行,都還需要各種管理工具來管理應用的性能、安全和資源。對于一個應用來講,消耗資源少、啟動快和遷移性好是重要的,但這還不夠,一個成熟的、經過企業級應用驗證的應用架構更為重要。容器目前的生態圈還不成熟,特別是還缺少經過企業級應用驗證的應用架構,容器編排引擎也還在不斷改進中,因此還不具備替代虛擬機的條件。

第三,容器更適合于需要運行同一個應用的多個實例,或者許多相近應用的場景,但是不太適合于多租戶場景。使用容器運行一個應用(如MySQL)的多個實例,因為相應的容器之間共享同樣的操作系統和代碼,從而可以節省大量資源;同樣的,使用容器運行許多相近的應用也可以節省大量的系統資源。

但是,容器并不太適合于多租戶場景:一方面是因為不同租戶之間是用的操作系統的版本可能不同,應用之間共享的代碼也會有差別,因此節省的系統資源量有限;更主要的原因是因為容器的安全性弱點,可能導致攻擊者使用容器非法入侵其他容器。

總之,因為容器和虛擬機具有各自的優勢和弱點,并且具有不同的功能,我們應該把容器虛擬化和虛擬機看成是兩個互相補充的技術,而不是相互替代的技術。一個數據中心應該同時支持這兩個技術以滿足不同應用場景的需求。

如何選擇是使用容器還是虛擬機取決于應用的場景。如果需要在有限的資源上運行同一個應用的許多實例,那么容器是最好的選擇。比如說,在一個教育云平臺上,需要為幾百個學生每人部署一套實驗環境,那么容器就是必然的選擇。

如果應用需要同時使用多種不同的操作系統,或者版本差別較大的操作系統,并且應用的安全性也很重要,那么就應該使用虛擬機來運行這些應用。比如說,需要為某個政府部門部署一套進行數據挖掘的大數據平臺。因為大數據平臺需要安裝Hadoop、HBase、Hive、Kafka、MySql、Elastic Search和SQL Server等多個系統,這些應用還需要運行在不同的操作系統之上,并且這些應用啟動以后會長期運行,而且政府機構對安全性要求都比較高,所以這種場景就需要選擇使用虛擬機。

4.2 在虛擬機內運行容器將會成為趨勢

容器和虛擬機技術各有優勢和弱點,并且各自都有自己的使用場景。如何把容器和虛擬機技術結合,相互取長補短,利用一個技術的優勢克服另一個技術的弱點成為了一個熱門研究課題。

基本的思路是把容器運行在虛擬機的內部,利用虛擬機的硬件隔離來提高容器的安全性,使用虛擬機豐富成熟的監控和管理工具完善容器的運行環境;同時,通過簡化虛擬機客戶操作系統本身來盡量保持容器的輕量和快速的優勢。傳統虛擬化技術的領軍公司Citrix、VMware和Microsoft都在研究在各自的虛擬化產品里運行容器。

虛擬機技術提供了一個靈活安全且方便使用的運行平臺,可以高效部署和管理各種應用;而容器則提供了一種方便地包裝、分發和部署應用的方法。這兩種技術處于應用生命周期的不同階段,如果能夠把它們結合起來發揮各自的優勢,那么就可以更好地同時滿足應用開發者和應用架構管理者的需求。

2015年,Citrix為XenServer虛擬機技術引進了對Docker容器技術的支持,使XenServer可以掌握哪些虛擬機里運行了Docker容器,并把容器的相關信息展示給系統管理員[20]。這樣就可以使系統管理員比較方便地使用同一套工具監控、分析和管理容器;同時開發人員還可以使用他們熟悉的工具進行容器的部署和管理。Citrix還計劃在XenServer的管理工具中引入容器編排引擎Kubernetes、Swarm和Mesos以便可以快速完成基于容器的應用部署。

VMware的VIC(vSphere Integrated Containers)項目的目的是為使用VMware產品公司的開發團隊提供一套產品級容器方案[21]。通過使用vSphere的現有能力,企業IT管理者可以在同一套系統架構上同時運行容器和虛擬機。在虛擬機里運行容器,開發人員可以利用vSphere的安全、網絡、存儲、資源管理等能力來運行容器應用。VIC包括如下三個核心組件:容器倉庫、容器引擎和容器管理。容器倉庫用來安全地存儲容器的鏡像;容器引擎提供了啟動容器的遠程API;容器管理給應用開發團隊提供了管理容器鏡像、倉庫和宿主機,以及運行容器的界面。

Microsoft與Docker已經宣布合伙把Windows服務器的生態系統引入到Docker社區[22]。Windows為容器提供了兩個運行模式:Windows Server容器模式和Hyper-V容器模式。Windows Server容器模式類似于Docker在Linux的模式,容器共享宿主操作系統;Hyper-V容器模式是在輕量虛擬機上運行容器,每個容器擁有自己的操作系統內核。

如上所述,在虛擬機里運行容器將會提高容器的安全性,并且可以利用各種成熟的虛擬機監控和管理工具來為容器服務,但是這種方法是不是會影響容器的性能?無可置疑,在虛擬機內運行容器的性能會低于直接在物理機上運行容器的性能,但是兩者之間的差距到底有多大?VMware的測試報告[23]指出兩點:第一點,把一個應用運行在基于vSphere虛擬機內的容器上與運行在直接部署在物理機上的容器上相比,兩者之間的性能差別不到5%;第二點,把一個應用運行在vSphere虛擬機上與運行在基于vSphere虛擬機的容器上相比,兩者之間的性能幾乎沒有任何差別。所以,用不到5%的性能損失換取安全性能的提高和方便的監控和管理工具是完全值得的。

在虛擬機內運行容器是當前研究的一個熱點,特別是傳統的虛擬化公司希望借助于自己多年來在虛擬化領域的技術沉淀來迎接容器虛擬化帶來的挑戰。從當前的初步結果來看,這種方式是一個很有潛力的快速解決容器弱點的途徑。相信在傳統虛擬化公司的帶領下,容器和虛擬機技術會更加融合,在虛擬機內運行容器將會成為一種趨勢。

4.3 以容器為中心的云計算時代即將開始

Docker容器技術的出現給云計算行業帶來了顛覆性的改變。過去的幾年中,在以Docker為代表的容器技術在不斷發展的同時,云計算行業也在研究如何迎接容器技術給云計算平臺帶來的挑戰和機會。IaaS平臺開發商在研究如何在平臺上引進對容器的支持,PaaS平臺開發商也在研究如何利用容器技術來改進平臺。隨著容器技術不斷走向成熟,以容器為核心的云計算時代即將開始。通過把第一代云計算的IaaS層與PaaS層的合二為一,CaaS將會成為新一代的云計算架構。

Amazon AWS已經提供容器管理服務ECS(Amazon EC2 Container Service)。ECS提供高度可擴展的高性能容器管理服務,目前它支持 Docker 容器從而使用戶可以在租用的 Amazon EC2 實例群集上通過容器輕松地運行應用程序。Amazon ECS的用戶不需要關心安裝、運維、擴展和管理集群基礎設施,只需簡單地調用 API 便可以啟動和停止Docker 應用程序,查詢集群的整體狀態。同時,用戶還可以使用Amazon EC2的其他功能,包括安全組、Elastic Load Balancing和EBS 卷等。 Amazon ECS還可以根據應用的資源需求和可用性要求在集群中設置和安排容器。

Microsoft Azure也引進了對容器的支持,Azure 容器服務提供了一個優化的容器托管服務。用戶可以方便地創建、設置和管理專門用來運行容器的虛擬機集群。用戶可以設置容器集群的大小,并且可以選擇流行的容器編排引擎Kubernetes、Marathon或者Swarm來部署自己的應用。

Google 容器引擎是一個功能強大的用來運行Docker容器的集群管理和編排系統。容器引擎負責使用編排和部署用戶的容器到集群中,并且負責根據用戶定義的需求對容器進行管理。Google容器引擎建立在Kubernetes開源編排系統之上。

開源云計算系統OpenStack從2014年就開始努力添加對容器的支持,并且在Liberty版本中提供了Swarm和Kubernetes編排引擎功能。OpenStack的最終目標是想提供一套兼容的API來統一管理物理機、虛擬機和容器。OpenStack的Magnum項目的任務就是實現在OpenStack中提供多租戶CaaS服務。盡管OpenStack當前版本對容器的支持還不理想,相信在后面的版本中會不斷進行完善。

Docker不僅掀起了IaaS服務提供商對容器支持的熱潮,同時也極大地推動了PaaS平臺的發展。PaaS的目標是提供一個讓開發者可以快速開發、部署和全周期管理應用的環境,而容器技術的優勢就是使應用的開發和管理變得簡單方便。早期的PaaS平臺支持許多上傳應用及其包裝和依賴的方法,隨著開發者開始使用Docker容器作為包裝和轉移應用的方法,支持Docker容器已經成為PaaS平臺的一種新局勢。三大PaaS公司的產品, Pivotal的Cloud Foundry、Red Had的OpenShift和Apprenda,都開始支持容器。

Red Hat在2015年頒布了OpenShift Enterprise 3,一個基于Docker容器、Kubernetes容器引擎和Red Hat Enterprise Linux 7的容器應用平臺。

2016年3月Apprenda也宣布在其PaaS平臺上支持Kubernetes。Apprenda過去以支持傳統的.NET和Java應用為主,通過支持Kubernetes,Apprenda希望成為一個可以管理傳統應用、微應用和容器應用的通用平臺。

Cloud Foundry從一開始就使用了容器的概念,并引入了容器管理平臺Warden,但是該容器格式與Docker容器不一樣。隨著Docker容器得到了廣泛采用,Cloud Foundry也計劃支持Docker。為此,Cloud Foundry重新開發了其容器管理平臺,改名為Garden。

總之,Docker容器的出現徹底打亂了原來云計算發展的進程,支持容器成為了IaaS和PaaS平臺的必要功能,以容器為核心的云計算時代即將開始。

5 結語

Docker的出現使得以容器為單位的云平臺成為可能。相比傳統系統虛擬化技術,Docker可以讓更多數量的應用程序在同一硬件上運行;可以讓開發人員更容易快速構建可隨時運行的容器化應用程序;可以大大簡化管理和部署應用程序的任務。任何后端的服務程序,都可以封裝在Docker容器中進行銷售、分發和部署,后端開發者能像Mobile App開發者那樣去做自己的產品。Docker的分布式特點令其具有大好的發展前景。

但是,傳統的虛擬技術并不會被容器取代。容器技術和虛擬機并非簡單的取舍關系。舉例來說,如果我們需要在多臺服務器上運行多款應用程序,并且需要多種操作系統,那么最理想的方案就是使用虛擬機。在另一方面,如果需要運行同一應用程序的多套副本,那么容器則擁有更多成本優勢。另外,盡管容器允許開發者將應用程序拆分成多個功能組件,但這種分散化趨勢意味著用戶需要管理更多功能部件,即帶來更為復雜的控制與協調任務。還有,安全也是Docker容器需要解決的一大難題。由于各容器共享同一套內核,因此不同容器之間的屏障相對薄弱。與只需要調用主機虛擬機管理程序的虛擬機方案不同,Docker容器需要向主機內核發出系統調用,而這會帶來更龐大的攻擊面。

盡管容器技術目前還不夠完善,其生態鏈還不成熟,但已經有很多廠商已經開始使用。同時一批圍繞Docker建立起來的初創企業已經形成, 學習Docker風氣正盛。可以預見在不遠的將來,CaaS和基于Docker的PaaS會獲得更多云計算服務提供商的支持,越來越多的企業會使用基Docker提供的云服務,以容器為核心的云計算時代即將到來。

References)

[1] 楊保華, 戴王劍, 曹亞侖. Docker技術入門與實戰[M]. 北京:機械工業出版社, 2015:1-15.(YANG B H, DAI W J, CAO Y L. Docker Technology Introduction and Actual Combat[M]. Beijing: China Machine Press, 2015:1-15.)

[2] PLANK J S. Erasure codes for storage systems: a brief primer[J].;login:the magazine of USENIX & SAGE, 2013, 38(6): 44-50.

[3] BELL J. Apache spark[EB/OL]. [2016- 03- 10]. http://onlinelibrary.wiley.com/doi/10.1002/9781119183464.ch11/summary.

[4] 從容器和Kubernetes技術看現代云計算的發展軌跡[EB/OL]. [2016- 10- 16]. http://dockone.io/article/140.(The development track of modern cloud computing from container and Kubernetes Technology[EB/OL]. [2016- 10- 16]. http://dockone.io/article/140.)

[5] 武志學. 云計算導論:概念 架構與應用[M]. 北京:人民郵電出版社, 2016:43-52.(WU Z X. Introduction to Cloud Computing: Concepts Frameworks and Applications[M]. Beijing: Posts and Telecom Press, 2016:43-52.)

[6] IBM虛擬化與云計算小組. 虛擬化與云計算[M]. 北京:電子工業出版社, 2010.(IBM virtualization and cloud computing group. Virtualization and Cloud Computing[M]. Beijing: Publishing House of Electronics Industry, 2010.)

[7] PRATT I, FRASER K, HAND S, et al. Xen 3.0 and the art of virtualization[J]. Proceedings of the Ottawa Linux Symposium, 2005, 36(5):164-177.

[8] 馬博峰. VMware、Citrix和Microsoft虛擬化技術詳解與應用實踐[M]. 北京:機械工業出版社, 2013.(MA B F. VMware, Citrix and Microsoft Virtualization Technology Explanation and Application Practice[M]. Beijing: China Machine Press, 2013.)

[9] KIVITY A, KAMAY Y, LAOR D, et al. KVM: the Linux virtual machine monitor[EB/OL]. [2016- 03- 10]. https://www.kernel.org/doc/ols/2007/ols2007v1-pages-225-230.pdf.

[10] ROSEN R. Linux Kernel Networking: Implementation and Theory[M]. Berkeley: Apress, 2014:405-482.

[11] 汪愷, 張功萱, 周秀敏. 基于容器虛擬化技術研究[J]. 計算機技術與發展, 2015, 25(8):138-141.(WANG K, ZHANG G X, ZHOU X M. Research on virtualization technology based on container[J]. Computer Technology and Development, 2015, 25(8):138-141.)

[12] What is docker [EB/OL]. [2016- 10- 15]. https://www.docker.com.

[13] MERKEL D. Docker: lightweight Linux containers for consistent development and deployment[J]. Linux Journal, 2014, 2014(239): Article No. 2.

[14] Docker v1.10 正式版 發布[Z/OL]. [2016- 03- 10]. https://www.oschina.net/news/70489/docker-1-10-0-final.(Docher v1.10 official version [Z/OL]. [2016- 03- 10]. https://www.oschina.net/news/70489/docker-1-10-0-final.)

[15] BIEDERMAN E W. Multiple instances of the global Linux namespaces[EB/OL]. [2016- 03- 10]. https://www.landley.net/kdocs/ols/2006/ols2006v1-pages-101-112.pdf.

[16] WRIGHT C P, ZADOK E. Kernel korner — unionfs: bringing filesystems together[J]. Linux Journal, 2004,2004(128):24-27.

[17] PIRAGHAJ S F, DASTJERDI A V, CALHEIROS R N, et al. Efficient virtual machine sizing for hosting containers as a service (SERVICES 2015)[C]// Proceedings of the 2015 IEEE World Congress on Services. Piscataway, NJ: IEEE, 2015:31-38.

[18] 王亞玲, 李春陽, 崔蔚, 等.基于Docker的PaaS平臺建設[J]:計算機系統應用, 2016, 25(3):72-77.(WANG Y L, LI C Y, CUI W, et al. Construction of PaaS platform based on Docker[J]. Computer Application Systems, 2016, 25(3):72-77.)

[19] FELTER W, FERREIRA A, RAJAMONY R, et al. An updated performance comparison of virtual machines and Linux containers[C]// Proceedings of the 2015 IEEE International Symposium on Performance Analysis of Systems and Software. Washington, DC: IEEE Computer Society, 2015:171-172.

[20] Docker support in XenServer, the ultimate guide[Z/OL]. [2016- 12- 16]. https://xen-orchestra.com/blog/docker-support-in-xenserver-the-ultimate-guide/.

[21] vSphere integrated containers — technology walkthrough[Z/OL]. [2016- 12- 16]. https://blogs.vmware.com/vsphere/2015/10/vsphere-integrated-containers-technology-walkthrough.html.

[22] Docker containers coming to a Microsoft or Linux server near you [Z/OL]. [2014- 10- 15]. https://msopentech.com/blog/2014/10/15/docker-containers-coming-microsoft-linux-server-near/.

[23] Docker containers performance in VMware vSphere[Z/OL]. [2016- 12- 22]. http://blogs.vmware.com/performance/2014/10/docker-containers-performance-vmware-vsphere.html.

WU Zhixue, born in 1960, Ph. D., professor. His research interests include cloud computing, streaming data processing, data mining.

Advances on virtualization technology of cloud computing

WU Zhixue1,2*

(1. Chengdu Wuzhou Handge Technology Limited, Chengdu Sichuan 611731, China;2. School of Information Security Engineering, Chengdu University of Information Technology, Chengdu Sichuan 610225, China)

Cloud computing is a new computing model focused on the capability of data and its processing. It integrates a number of information and communication technologies, including virtualization, distributed data storage, distributed parallel programming model, big data management and distributed resource management. After more than a decade of development, cloud computing has entered a rapid growth period, more and more enterprises have adapted to cloud computing services. At the same time, the key technologies of cloud computing have advanced as well. The new generation technologies are enhancing and even replacing the existing technologies. Container is a new type virtualization technology. With its lightweight, elastic and fast advantages, container challenges the traditional virtual machine technology, and brings changes to the architecture and implementation of both the Infrastructure as a Service (IaaS) and Platform as a Service (PaaS). Container virtualization technology was described in detail, the advantages and disadvantages, the suitable use cases of container and virtual machine technology were compared and analyzed, then the future research directions and development trends of cloud computing virtualization technology were prospected.

cloud computing; virtualization; Docker; container; virtual machine

2016- 10- 18;

2017- 01- 06。

武志學(1960—),男,山西河津人,教授,博士,主要研究方向:云計算、流式數據處理、數據挖掘。

1001- 9081(2017)04- 0915- 09

10.11772/j.issn.1001- 9081.2017.04.0915

TP391

A

猜你喜歡
資源用戶服務
基礎教育資源展示
一樣的資源,不一樣的收獲
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
資源回收
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
主站蜘蛛池模板: 91久久精品日日躁夜夜躁欧美| 国产在线视频欧美亚综合| 日韩福利在线视频| 中文字幕乱码中文乱码51精品| 欧美中文一区| 91九色最新地址| 91视频国产高清| 91国内在线观看| 亚洲精品国产综合99久久夜夜嗨| 99re热精品视频国产免费| 99视频在线免费| 免费无遮挡AV| 亚洲欧美日本国产专区一区| 欧美日韩国产在线人| 欧美日韩成人| 伊人久久久大香线蕉综合直播| 99国产精品一区二区| 亚洲午夜国产精品无卡| 国产视频欧美| 国内精自线i品一区202| 亚洲国产中文精品va在线播放| 欧美日韩在线成人| 国产精品亚洲日韩AⅤ在线观看| 久久久久久久久亚洲精品| 黄色免费在线网址| 国产成人综合久久| 黄色在线网| 91成人在线免费观看| 一级毛片免费观看久| 99视频在线免费观看| 无码视频国产精品一区二区| 伊人久久大香线蕉成人综合网| 久久国产乱子| 国产精品999在线| 色婷婷综合激情视频免费看| 伊人91视频| 国产精品永久久久久| 无码乱人伦一区二区亚洲一| 免费人成视频在线观看网站| 亚洲男人在线| 免费看美女自慰的网站| 亚洲精品手机在线| 日本精品αv中文字幕| 69av免费视频| 亚洲色图综合在线| 在线看AV天堂| 激情午夜婷婷| 免费国产小视频在线观看| 亚洲第一极品精品无码| 中文成人在线视频| 亚洲日韩AV无码一区二区三区人| 国产成人精品一区二区不卡| 一级不卡毛片| 一区二区理伦视频| 91精品在线视频观看| 2019国产在线| 伊人精品视频免费在线| 亚洲精品中文字幕午夜| 亚洲中文字幕久久精品无码一区| 99视频精品全国免费品| 3344在线观看无码| 日韩成人免费网站| 欧美不卡在线视频| 日韩欧美成人高清在线观看| 91亚洲精选| 麻豆a级片| 尤物特级无码毛片免费| 欧美区在线播放| 国产第一色| 99视频在线免费| 一级一级特黄女人精品毛片| 91福利片| 日韩人妻少妇一区二区| 99这里精品| 亚洲Av激情网五月天| 又大又硬又爽免费视频| 欧美精品二区| 麻豆精品在线视频| 亚洲免费三区| 欧美日韩精品综合在线一区| 在线观看无码a∨| 亚洲精品中文字幕无乱码|