容器云的十大特性

2018/6/12 9:33:37

隨著以Docker為代表的容器技術(shù)在國(guó)內(nèi)的迅速發(fā)展,容器云也逐漸被廣大開發(fā)者所熟知,但容器云(CaaS)相比傳統(tǒng)的云主機(jī)(IaaS)在實(shí)際應(yīng)用中還存在著一些鴻溝。本文以通俗精煉的語(yǔ)言向廣大開發(fā)者介紹容器的特點(diǎn),應(yīng)用場(chǎng)景以及優(yōu)勢(shì)等。

 

  1.高密度 高彈性

 

  現(xiàn)有的云計(jì)算平臺(tái)在面對(duì)大規(guī)模、高彈性計(jì)算的需求時(shí)往往會(huì)遇到一些瓶頸:

 

  1.難以在短時(shí)間內(nèi)啟動(dòng)大規(guī)模計(jì)算資源來(lái)應(yīng)對(duì)高并發(fā)的需求;

  2.傳統(tǒng)IaaS的彈性計(jì)算性價(jià)比低,每個(gè)虛擬機(jī)都要消耗額外的系統(tǒng)資源。

 

  由于Docker容器的啟動(dòng)一般在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。 另外 Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。容器除了運(yùn)行其中的應(yīng)用外,基本不需要消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開銷很小?;谔摂M機(jī)的技術(shù)決定了它的啟動(dòng)速度分鐘級(jí)(或數(shù)秒級(jí)),而Docker基于輕量級(jí)的LXC,它的啟動(dòng)速度是毫秒級(jí)(秒級(jí))的。這就使得容器云具備高密度,高彈性的特性,在面對(duì)突發(fā)訪問(wèn)量時(shí)也能輕松應(yīng)對(duì)。另外它通過(guò)提升應(yīng)用對(duì)系統(tǒng)資源的利用率,使得相比虛擬機(jī)的性價(jià)比大大的提高了。

 

  2.兼具IaaS的靈活和PaaS的便利

 

  基于Docker的容器云是一個(gè)用于開發(fā)、交付和運(yùn)行應(yīng)用的平臺(tái),Docker 設(shè)計(jì)用來(lái)更快的交付應(yīng)用程序。Docker 可以將你的應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,并且還可以將基礎(chǔ)設(shè)施當(dāng)作程序一樣進(jìn)行管理。Docker 可以實(shí)現(xiàn)更快地打包代碼、測(cè)試以及部署,并且大大縮短從開發(fā)到運(yùn)行上線的周期。容器云的本質(zhì)是一個(gè)輕量級(jí)的容器虛擬化平臺(tái),以及一套標(biāo)準(zhǔn)的開發(fā),構(gòu)建,部署,運(yùn)行的流程,并且可以集成各類工具,比如持續(xù)集成,數(shù)據(jù)庫(kù)與緩存,大數(shù)據(jù)等,以及一些PaaS類的服務(wù)。容器云在計(jì)算資源調(diào)度上具備IaaS的靈活性,以及PaaS的便利,彈性伸縮,日志監(jiān)控,滾動(dòng)升級(jí),持續(xù)集成/部署等系統(tǒng)級(jí)的PaaS服務(wù)已成為容器云的標(biāo)配,并逐漸會(huì)往上層發(fā)展,比如部署數(shù)據(jù)庫(kù)與緩存,大數(shù)據(jù),安全監(jiān)控等服務(wù),以及集成各類SaaS服務(wù)。

 

  3.容器化應(yīng)用是基石,一切都封裝在鏡像里

 

  Docker 提供了一種在安全隔離的容器中運(yùn)行幾乎所有應(yīng)用的方式,這種隔離性和安全性允許你在同一主機(jī)上同時(shí)運(yùn)行多個(gè)容器,而容器的這種輕量級(jí)特性,意味著你可以節(jié)省更多的系統(tǒng)資源,因?yàn)槟悴槐叵倪\(yùn)行 hypervisor 所需要的額外負(fù)載。對(duì)于容器云而言,所有的應(yīng)用都需要容器化以后才能發(fā)布,即將應(yīng)用程序打包進(jìn)Docker容器,以鏡像的方式運(yùn)行。容器化應(yīng)用未來(lái)將會(huì)成為云端應(yīng)用交付的標(biāo)準(zhǔn)。

 

  4.實(shí)現(xiàn)更快速的交付和部署

 

  對(duì)于開發(fā)者來(lái)說(shuō),往往希望能夠一次構(gòu)建,隨處運(yùn)行。試想一下,如果你的team里10個(gè)開發(fā)者,按傳統(tǒng)的方式,每個(gè)新來(lái)的人往往需要在自己的環(huán)境里重復(fù)搭建一套開發(fā)測(cè)試環(huán)境,而通常因?yàn)橄到y(tǒng)的不一致(有的人玩Windows,有的玩Ubuntu,抑或是Mac),導(dǎo)致出錯(cuò)率大大提高以及效率的降低。而使用Docker之后,開發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來(lái)構(gòu)建一套開發(fā)環(huán)境,開發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來(lái)部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過(guò)程全程可見(jiàn),使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。

 

  5.更易于微服務(wù)架構(gòu)的實(shí)現(xiàn)

 

  微服務(wù)采用一組服務(wù)的方式來(lái)構(gòu)建一個(gè)應(yīng)用,服務(wù)獨(dú)立部署在不同的進(jìn)程中,不同服務(wù)通過(guò)一些輕量級(jí)交互機(jī)制來(lái)通信,例如 RPC、HTTP 等,服務(wù)可獨(dú)立擴(kuò)展伸縮,每個(gè)服務(wù)定義了明確的邊界,不同的服務(wù)甚至可以采用不同的編程語(yǔ)言來(lái)實(shí)現(xiàn),由獨(dú)立的團(tuán)隊(duì)來(lái)維護(hù)。微服務(wù)通常具有相互獨(dú)立、原子化、松耦合結(jié)構(gòu)等特點(diǎn)。基于Docker的容器云更易于微服務(wù)架構(gòu)的實(shí)現(xiàn)主要體現(xiàn)在以下幾個(gè)方面:

 

  1.一個(gè)容器即是一個(gè)完整的執(zhí)行環(huán)境,不依賴外部任何的東西。

  2.一臺(tái)物理機(jī)器可以同時(shí)運(yùn)行成百上千個(gè)容器。它的計(jì)算粒度足夠的小。

  3.容器通常是秒級(jí)創(chuàng)建和銷毀,所以非常適合服務(wù)的構(gòu)建和重組。

  4.一系列的容器編排工具,能夠快速的實(shí)現(xiàn)服務(wù)的組合和調(diào)度。

 

  比如在時(shí)速云的容器編排里,可以支持Pod和Stack兩種級(jí)別的編排。Pod俗稱容器組,直譯為豌豆莢,也就是以多個(gè)容器為一個(gè)調(diào)度單元,容器之間共享網(wǎng)絡(luò)、存儲(chǔ)等,它們的關(guān)系是同生共死。Stack即是彼此之間相互獨(dú)立的容器之間的組合。

 

  6.更高效的虛擬化

 

  由于Docker輕量并且快速,因此相對(duì)于基于Hypervisor的虛擬機(jī)的部署方式,Docker提供了一種更可行和劃算的替代方案,這對(duì)于高密度部署環(huán)境尤其有用,例如在構(gòu)建私有云或PaaS。當(dāng)然,當(dāng)你想在有限的資源里部署更多的應(yīng)用時(shí),Docker對(duì)于中小型的部署也非常有用。Docker 容器的運(yùn)行不需要額外的 hypervisor 支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。

 

  7.容器的啟動(dòng)是(毫)秒級(jí)的

 

  通常,如果要在一臺(tái)服務(wù)器上運(yùn)行多個(gè)任務(wù),傳統(tǒng)的方法是將其劃分為多個(gè)虛擬機(jī),使用每個(gè)虛擬機(jī)來(lái)運(yùn)行一個(gè)任務(wù)。但是虛擬機(jī)啟動(dòng)很慢,因?yàn)樗鼈儽仨殕?dòng)整個(gè)操作系統(tǒng),這要花上幾分鐘的時(shí)間。而且這會(huì)占用大量資源,因?yàn)槊總€(gè)虛擬機(jī)都需要運(yùn)行一個(gè)完整的操作系統(tǒng)實(shí)例。容器則提供了某種類似的行為,但是速度更快一些,因?yàn)閱?dòng)一個(gè)容器就像啟動(dòng)一個(gè)進(jìn)程。

 

  8.像搭積木一樣的進(jìn)行資源編排

 

  在基于Kubernetes的容器云中,可以實(shí)現(xiàn)Pod和Stack兩種層面的編排。

 

  1)Pod 編排

 

  適用于緊耦合的服務(wù)組,保證一組服務(wù)始終部署在同一節(jié)點(diǎn),并可以共享網(wǎng)絡(luò)空間和存儲(chǔ)卷。也就是同一個(gè)Pod 內(nèi)的容器可以通過(guò) localhost 訪問(wèn)彼此服務(wù),共享網(wǎng)絡(luò)空間,容器的端口不能互相沖突;對(duì)于同一個(gè)存儲(chǔ)卷,可以被同一個(gè)Pod 的多個(gè)容器操作。通過(guò) Pod 編排,使我們不需要重新構(gòu)建鏡像,就可以把多個(gè)服務(wù)進(jìn)行整合。如果一個(gè)容器推薦僅包含一個(gè)進(jìn)程,那么Pod更像是可以容納多個(gè)進(jìn)程的虛擬機(jī)。

 

  2)Stack 編排

 

  設(shè)計(jì)上與 Docker Compose 相似,但可以支持跨物理節(jié)點(diǎn)的服務(wù)之間通過(guò) API 進(jìn)行網(wǎng)絡(luò)通信。以上兩種編排均支持用 yaml 文件描述多個(gè)容器及其之間的關(guān)系,定制各個(gè)容器的屬性,并可一鍵部署運(yùn)行。

 

  9.更簡(jiǎn)單的管理,負(fù)載均衡、彈性伸縮、日志監(jiān)控、滾動(dòng)升級(jí)等舉手可得

 

  對(duì)于容器云,通常只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。而以前需要耗費(fèi)額外的工作去開發(fā)的一些管理運(yùn)維的工作,比如負(fù)載均衡,全自動(dòng)/半自動(dòng)彈性伸縮,日志監(jiān)控,滾動(dòng)升級(jí)等都往往成為了容器云的“標(biāo)配”,你無(wú)需再為這些事情而操心。

 

  10.易于擴(kuò)展和遷移

 

  容器云的Docker 容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。容器云的這種特性類似于Java的JVM,Java程序可以運(yùn)行在任意的安裝了JVM的設(shè)備上,在遷移和擴(kuò)展方面變得更加容易。

審核編輯(
王靜
)
投訴建議

提交

查看更多評(píng)論
其他資訊

查看更多

新大陸自動(dòng)識(shí)別精彩亮相2024華南國(guó)際工業(yè)博覽會(huì)

派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者

智能工控,存儲(chǔ)強(qiáng)基 | ??低晭?lái)精彩主題演講

展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)

中國(guó)聯(lián)通首個(gè)量子通信產(chǎn)品“量子密信”亮相!