容器技術(shù)這幾年,真的是特別火爆啊。
盡管容器技術(shù)已經(jīng)出現(xiàn)很久了,卻是隨著Docker的出現(xiàn)而變得廣為人知的。
Docker是第一個使容器能在不同機器之間移植的系統(tǒng)。
業(yè)內(nèi)甚至經(jīng)常出現(xiàn)一種聲音:Docker將取代VM。
不得不說,還是夸張了。
容器的優(yōu)勢在于是它使得業(yè)務(wù)的上云部署更快,資源利用更高。但是在安全性上,不好說。
今天就給你展開說說,到底什么是Docker容器?Docker容器和VM有什么區(qū)別?
01
為什么需要Docker容器?
01這就得先說回到虛擬機了
虛擬機,也就是Virtual Machine,VM的發(fā)展,減輕了企業(yè)對硬件資源的依賴。
它將一臺物理設(shè)備虛擬為多個邏輯設(shè)備,每個邏輯設(shè)備可運行不同的操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響,從而顯著提高設(shè)備的工作效率。
然而,傳統(tǒng)VM需要安裝操作系統(tǒng)才能執(zhí)行應(yīng)用程序,占用系統(tǒng)資源過多。
多數(shù)情況下,用戶只需要運行簡單的應(yīng)用程序,采用VM技術(shù)操作繁瑣且造成資源浪費。
假如需要遷移應(yīng)用服務(wù)程序,則需遷移整個VM,因此企業(yè)迫切需要輕量級的虛擬化技術(shù)。
02靈活遷移部署,簡直不要太香
容器,就是一種輕量級的虛擬化技術(shù),目的和虛擬機一樣,都是為了創(chuàng)造“隔離環(huán)境”。
但是它不像VM采用操作系統(tǒng)級的資源隔離,容器采用的是進程級的系統(tǒng)隔離。
Docker作為創(chuàng)建容器的主流工具,為啥發(fā)展這么迅速?
關(guān)鍵點就在于它可以讓開發(fā)者將企業(yè)需要的各種應(yīng)用及應(yīng)用依賴文件封裝在Docker鏡像文件中。
然后在任何物理設(shè)備(Linux設(shè)備或Window設(shè)備等)上安裝運行實現(xiàn)虛擬化;
讓應(yīng)用程序徹底脫離底層設(shè)備,可以在物理機之間靈活遷移部署,使運維工程師擺脫了繁瑣的環(huán)境部署,極大的提高了工作效率,同時減少了部署過程中的潛在風(fēng)險。
03Docker容器的3大特點
輕量化:
一臺主機上運行的多個Docker容器可以共享主機操作系統(tǒng)內(nèi)核;啟動迅速,只需占用很少的計算和內(nèi)存資源。
標準開放:
Docker容器基于開放式標準,能夠在所有主流Linux版本、Microsoft Windows以及包括VM、裸機服務(wù)器和云在內(nèi)的任何基礎(chǔ)設(shè)施上運行。
安全可靠:
Docker賦予應(yīng)用的隔離性不僅限于彼此隔離,還獨立于底層的基礎(chǔ)設(shè)施。
Docker默認提供最強的隔離,因此應(yīng)用出現(xiàn)問題,也只是單個容器的問題,而不會波及到整臺主機。
02
Docker容器 VS VM
Docker容器和傳統(tǒng)VM技術(shù),在技術(shù)實現(xiàn)上有所不同。
01VM與Docker容器的邏輯組成
VM:
使用Hypervisor提供虛擬機的運行平臺,管理每個VM中操作系統(tǒng)的運行。
每個VM都要有自己的操作系統(tǒng)、應(yīng)用程序和必要的依賴文件等。
Docker容器:
使用Docker引擎進行調(diào)度和隔離,提高了資源利用率,在相同硬件能力下可以運行更多的容器實例;每個容器擁有自己的隔離化用戶空間。
02Docker容器的優(yōu)勢
相較于VM,Docker容器作為一種輕量級的虛擬化方式,在應(yīng)用方面具有以下顯著優(yōu)勢:
Docker容器可以在秒級時間內(nèi)快速啟動和停止,相較傳統(tǒng)虛擬機顯著提升。
Docker容器對系統(tǒng)資源要求低,數(shù)千個Docker容器可同時運行在同一個主機上。
Docker容器通過類似Git的操作來方便用戶獲取和更新應(yīng)用鏡像。
Docker容器通過Dockerfile配置文件實現(xiàn)自動化創(chuàng)建和靈活部署,提高工作效率。
Docker容器除了運行其中的應(yīng)用之外,基本不消耗額外的系統(tǒng)資源,保證應(yīng)用性能的同時,盡量減小系統(tǒng)開銷。
下圖可直觀了解Docker容器與傳統(tǒng)VM方式的區(qū)別:
03
Docker容器是如何工作的?
01Docker的三大組成要素
鏡像:
Docker鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的配置參數(shù)。
鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。
鏡像可以用來創(chuàng)建Docker容器,用戶可以使用設(shè)備上已有的鏡像來安裝多個相同的Docker容器。
容器:
鏡像創(chuàng)建的運行實例,Docker利用容器來運行應(yīng)用。
每個容器都是相互隔離的、保證安全的平臺。
我們可以把容器看做是一個輕量級的Linux運行環(huán)境。
鏡像倉庫:
集中存放鏡像文件的地方。
用戶創(chuàng)建完鏡像后,可以將其上傳到公共倉庫或者私有倉庫,需要在另一臺主機上使用該鏡像時,只需要從倉庫上下載即可。
02Docker容器的運行邏輯
如下圖所示,Docker使用客戶端/服務(wù)器 (C/S) 架構(gòu)模式。
Docker守護進程(Docker daemon)作為Server端接收Docker客戶端的請求,并負責(zé)創(chuàng)建、運行和分發(fā)Docker容器。
Docker守護進程一般在Docker主機后臺運行,用戶使用Docker客戶端直接跟Docker守護進程進行信息交互。
Docker運行流程
接下來給你展開說說Docker的客戶端、主機和守護進程。(根據(jù)上面這張圖來看哈)
1、Docker客戶端:
用于和Docker守護進程(Docker Daemon)建立通信的客戶端。
Docker客戶端只需要向Docker服務(wù)器或者守護進程發(fā)出請求(Docker構(gòu)建、Docker拉取和Docker啟動等指令),服務(wù)器或者守護進程將完成所有工作并返回結(jié)果。
如橙色流程所示,執(zhí)行Docker構(gòu)建指令會根據(jù)Docker文件構(gòu)建一個鏡像存放于本地Docker主機。
如藍色流程所示,執(zhí)行Docker拉取指令會從云端鏡像倉庫拉取鏡像至本地Docker主機或?qū)⒈镜冂R像推送至遠端鏡像倉庫。
如黑色流程所示,執(zhí)行Docker啟動指令會將鏡像安裝至容器并啟動容器。
2、Docker主機:
一個物理或者虛擬的機器用于執(zhí)行 Docker守護進程和容器。
3、Docker守護進程:
接收并處理Docker客戶端發(fā)送的請求,監(jiān)測Docker API的請求和管理Docker對象,比如鏡像、容器、網(wǎng)絡(luò)和數(shù)據(jù)卷。
EC-IoT解決方案基于“邊緣智能+云化管理”平臺,物聯(lián)網(wǎng)關(guān)開放邊緣計算能力,快速適配不同行業(yè)邊緣智能數(shù)據(jù)處理需求。
實現(xiàn)關(guān)鍵業(yè)務(wù)本地毫秒級實時響應(yīng),完成數(shù)據(jù)本地聚合優(yōu)化,高價值數(shù)據(jù)主動回傳云端。
邊緣計算網(wǎng)關(guān)基于“硬件平臺化,業(yè)務(wù)APP化”的設(shè)計理念,終端功能由APP軟件定義,用戶基于基礎(chǔ)服務(wù)接口開發(fā)自定義APP,并實現(xiàn)在邊緣計算網(wǎng)關(guān)的靈活部署,快速適應(yīng)業(yè)務(wù)需求復(fù)雜多變的物聯(lián)場景。
邊緣計算網(wǎng)關(guān)支持部署Docker容器,用戶可在部署的容器上安裝自己的業(yè)務(wù)APP,同時網(wǎng)關(guān)設(shè)備提供各種eSDK接口供容器和APP調(diào)用其資源。
EC-IoT解決方案
網(wǎng)關(guān)開放性
04
容器的分類
容器技術(shù)架構(gòu)主流的有兩種:
01一種是Linux Container,即LXC
LXC起源于Linux內(nèi)核中的Cgroup和namespace的開發(fā),以支持輕量級虛擬化操作系統(tǒng)環(huán)境,是一種操作系統(tǒng)級別的輕量級Linux容器。
提供輕量級的虛擬化隔離進程和資源:
它將應(yīng)用軟件系統(tǒng)打包成一個軟件容器,內(nèi)含應(yīng)用軟件本身的代碼,以及所需要的操作系統(tǒng)核心庫。
它通過統(tǒng)一的名字空間和共用API(Application Programming Interface,應(yīng)用程序編程接口)來分配不同軟件容器的硬件資源。
創(chuàng)造出應(yīng)用程序的獨立沙箱運行環(huán)境,使得Linux用戶可以容易的創(chuàng)建和管理系統(tǒng)或應(yīng)用容器。
02一種是Docker公司發(fā)布的Docker
Docker是在LXC基礎(chǔ)上進一步封裝的容器技術(shù)架構(gòu),它相當與一個應(yīng)用程序級別的容器,也稱為APP容器。
即每個Docker容器是一個獨立的APP,Docker將APP打包成一個鏡像,在其它地方需要使用此APP時,直接獲取到此鏡像即可,方便部署與安裝。
如上圖所示,Docker與LXC實現(xiàn)容器都是通過Linux kernel的namespace與Cgroup機制實現(xiàn)。
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27397 -
虛擬機
+關(guān)注
關(guān)注
1文章
917瀏覽量
28202 -
裸機
+關(guān)注
關(guān)注
0文章
39瀏覽量
6377 -
docker容器
+關(guān)注
關(guān)注
0文章
30瀏覽量
3326
發(fā)布評論請先 登錄
相關(guān)推薦
評論