容器云的十大特性
隨著以Docker為代表的容器技術(shù)在國內(nèi)的迅速發(fā)展,容器云也逐漸被廣大開發(fā)者所熟知,但容器云(CaaS)相比傳統(tǒng)的云主機(IaaS)在實際應(yīng)用中還存在著一些鴻溝。本文以通俗精煉的語言向廣大開發(fā)者介紹容器的特點,應(yīng)用場景以及優(yōu)勢等。
1.高密度 高彈性
現(xiàn)有的云計算平臺在面對大規(guī)模、高彈性計算的需求時往往會遇到一些瓶頸:
1.難以在短時間內(nèi)啟動大規(guī)模計算資源來應(yīng)對高并發(fā)的需求;
2.傳統(tǒng)IaaS的彈性計算性價比低,每個虛擬機都要消耗額外的系統(tǒng)資源。
由于Docker容器的啟動一般在秒級實現(xiàn),這相比傳統(tǒng)的虛擬機方式要快得多。 另外 Docker 對系統(tǒng)資源的利用率很高,一臺主機上可以同時運行數(shù)千個 Docker 容器。容器除了運行其中的應(yīng)用外,基本不需要消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時系統(tǒng)的開銷很小?;谔摂M機的技術(shù)決定了它的啟動速度分鐘級(或數(shù)秒級),而Docker基于輕量級的LXC,它的啟動速度是毫秒級(秒級)的。這就使得容器云具備高密度,高彈性的特性,在面對突發(fā)訪問量時也能輕松應(yīng)對。另外它通過提升應(yīng)用對系統(tǒng)資源的利用率,使得相比虛擬機的性價比大大的提高了。
2.兼具IaaS的靈活和PaaS的便利
基于Docker的容器云是一個用于開發(fā)、交付和運行應(yīng)用的平臺,Docker 設(shè)計用來更快的交付應(yīng)用程序。Docker 可以將你的應(yīng)用程序和基礎(chǔ)設(shè)施層隔離,并且還可以將基礎(chǔ)設(shè)施當作程序一樣進行管理。Docker 可以實現(xiàn)更快地打包代碼、測試以及部署,并且大大縮短從開發(fā)到運行上線的周期。容器云的本質(zhì)是一個輕量級的容器虛擬化平臺,以及一套標準的開發(fā),構(gòu)建,部署,運行的流程,并且可以集成各類工具,比如持續(xù)集成,數(shù)據(jù)庫與緩存,大數(shù)據(jù)等,以及一些PaaS類的服務(wù)。容器云在計算資源調(diào)度上具備IaaS的靈活性,以及PaaS的便利,彈性伸縮,日志監(jiān)控,滾動升級,持續(xù)集成/部署等系統(tǒng)級的PaaS服務(wù)已成為容器云的標配,并逐漸會往上層發(fā)展,比如部署數(shù)據(jù)庫與緩存,大數(shù)據(jù),安全監(jiān)控等服務(wù),以及集成各類SaaS服務(wù)。
3.容器化應(yīng)用是基石,一切都封裝在鏡像里
Docker 提供了一種在安全隔離的容器中運行幾乎所有應(yīng)用的方式,這種隔離性和安全性允許你在同一主機上同時運行多個容器,而容器的這種輕量級特性,意味著你可以節(jié)省更多的系統(tǒng)資源,因為你不必消耗運行 hypervisor 所需要的額外負載。對于容器云而言,所有的應(yīng)用都需要容器化以后才能發(fā)布,即將應(yīng)用程序打包進Docker容器,以鏡像的方式運行。容器化應(yīng)用未來將會成為云端應(yīng)用交付的標準。
4.實現(xiàn)更快速的交付和部署
對于開發(fā)者來說,往往希望能夠一次構(gòu)建,隨處運行。試想一下,如果你的team里10個開發(fā)者,按傳統(tǒng)的方式,每個新來的人往往需要在自己的環(huán)境里重復(fù)搭建一套開發(fā)測試環(huán)境,而通常因為系統(tǒng)的不一致(有的人玩Windows,有的玩Ubuntu,抑或是Mac),導(dǎo)致出錯率大大提高以及效率的降低。而使用Docker之后,開發(fā)者可以使用一個標準的鏡像來構(gòu)建一套開發(fā)環(huán)境,開發(fā)完成之后,運維人員可以直接使用這個容器來部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。
5.更易于微服務(wù)架構(gòu)的實現(xiàn)
微服務(wù)采用一組服務(wù)的方式來構(gòu)建一個應(yīng)用,服務(wù)獨立部署在不同的進程中,不同服務(wù)通過一些輕量級交互機制來通信,例如 RPC、HTTP 等,服務(wù)可獨立擴展伸縮,每個服務(wù)定義了明確的邊界,不同的服務(wù)甚至可以采用不同的編程語言來實現(xiàn),由獨立的團隊來維護。微服務(wù)通常具有相互獨立、原子化、松耦合結(jié)構(gòu)等特點?;贒ocker的容器云更易于微服務(wù)架構(gòu)的實現(xiàn)主要體現(xiàn)在以下幾個方面:
1.一個容器即是一個完整的執(zhí)行環(huán)境,不依賴外部任何的東西。
2.一臺物理機器可以同時運行成百上千個容器。它的計算粒度足夠的小。
3.容器通常是秒級創(chuàng)建和銷毀,所以非常適合服務(wù)的構(gòu)建和重組。
4.一系列的容器編排工具,能夠快速的實現(xiàn)服務(wù)的組合和調(diào)度。
比如在時速云的容器編排里,可以支持Pod和Stack兩種級別的編排。Pod俗稱容器組,直譯為豌豆莢,也就是以多個容器為一個調(diào)度單元,容器之間共享網(wǎng)絡(luò)、存儲等,它們的關(guān)系是同生共死。Stack即是彼此之間相互獨立的容器之間的組合。
6.更高效的虛擬化
由于Docker輕量并且快速,因此相對于基于Hypervisor的虛擬機的部署方式,Docker提供了一種更可行和劃算的替代方案,這對于高密度部署環(huán)境尤其有用,例如在構(gòu)建私有云或PaaS。當然,當你想在有限的資源里部署更多的應(yīng)用時,Docker對于中小型的部署也非常有用。Docker 容器的運行不需要額外的 hypervisor 支持,它是內(nèi)核級的虛擬化,因此可以實現(xiàn)更高的性能和效率。
7.容器的啟動是(毫)秒級的
通常,如果要在一臺服務(wù)器上運行多個任務(wù),傳統(tǒng)的方法是將其劃分為多個虛擬機,使用每個虛擬機來運行一個任務(wù)。但是虛擬機啟動很慢,因為它們必須啟動整個操作系統(tǒng),這要花上幾分鐘的時間。而且這會占用大量資源,因為每個虛擬機都需要運行一個完整的操作系統(tǒng)實例。容器則提供了某種類似的行為,但是速度更快一些,因為啟動一個容器就像啟動一個進程。
8.像搭積木一樣的進行資源編排
在基于Kubernetes的容器云中,可以實現(xiàn)Pod和Stack兩種層面的編排。
1)Pod 編排
適用于緊耦合的服務(wù)組,保證一組服務(wù)始終部署在同一節(jié)點,并可以共享網(wǎng)絡(luò)空間和存儲卷。也就是同一個Pod 內(nèi)的容器可以通過 localhost 訪問彼此服務(wù),共享網(wǎng)絡(luò)空間,容器的端口不能互相沖突;對于同一個存儲卷,可以被同一個Pod 的多個容器操作。通過 Pod 編排,使我們不需要重新構(gòu)建鏡像,就可以把多個服務(wù)進行整合。如果一個容器推薦僅包含一個進程,那么Pod更像是可以容納多個進程的虛擬機。
2)Stack 編排
設(shè)計上與 Docker Compose 相似,但可以支持跨物理節(jié)點的服務(wù)之間通過 API 進行網(wǎng)絡(luò)通信。以上兩種編排均支持用 yaml 文件描述多個容器及其之間的關(guān)系,定制各個容器的屬性,并可一鍵部署運行。
9.更簡單的管理,負載均衡、彈性伸縮、日志監(jiān)控、滾動升級等舉手可得
對于容器云,通常只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實現(xiàn)自動化并且高效的管理。而以前需要耗費額外的工作去開發(fā)的一些管理運維的工作,比如負載均衡,全自動/半自動彈性伸縮,日志監(jiān)控,滾動升級等都往往成為了容器云的“標配”,你無需再為這些事情而操心。
10.易于擴展和遷移
容器云的Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個應(yīng)用程序從一個平臺直接遷移到另外一個。容器云的這種特性類似于Java的JVM,Java程序可以運行在任意的安裝了JVM的設(shè)備上,在遷移和擴展方面變得更加容易。
提交
新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會
派拓網(wǎng)絡(luò)被Forrester評為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲強基 | 海康威視帶來精彩主題演講
展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會
中國聯(lián)通首個量子通信產(chǎn)品“量子密信”亮相!