溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

docker架構(gòu)及工作流程

發(fā)布時(shí)間:2020-08-02 16:38:49 來(lái)源:網(wǎng)絡(luò) 閱讀:498 作者:小白的希望 欄目:系統(tǒng)運(yùn)維

一、概念
docker是開(kāi)源容器引擎,基于cgroup,namespace,unionFS等技術(shù)實(shí)現(xiàn),對(duì)應(yīng)用進(jìn)行封裝的虛擬化技術(shù)

什么是cgroup?
對(duì)系統(tǒng)資源限制,創(chuàng)建容器的過(guò)程其實(shí)就是在創(chuàng)建進(jìn)程,對(duì)資源的分配和維護(hù)使用cgroup來(lái)管理,包括cpu,內(nèi)存,io等?
什么是namespace?
創(chuàng)建容器時(shí),對(duì)容器來(lái)說(shuō)就是一個(gè)全新的系統(tǒng),容器內(nèi)的文件系統(tǒng)要和宿主機(jī)文件系統(tǒng)隔離,網(wǎng)絡(luò)空間隔離,用戶權(quán)限隔離,這些隔離操作都是有namespace 來(lái)管理完成的
什么是unionFS?
聯(lián)合文件系統(tǒng),簡(jiǎn)單理解就是多個(gè)目錄結(jié)構(gòu)合并成一個(gè),而各個(gè)目錄結(jié)構(gòu)本身物理位置并沒(méi)有變化。

二、架構(gòu)
docker架構(gòu)及工作流程
1.C/S架構(gòu)

組件:
docker cli: docker客戶端,用來(lái)管理docker,向docker發(fā)送指令的工具
docker engine: 拉取推送鏡像,對(duì)容器操作相關(guān)的api的最上層封裝,直接面向client
image repository: 注冊(cè)中信,存儲(chǔ)鏡像的地方
Containerd: 是一個(gè)守護(hù)進(jìn)程,負(fù)責(zé)管理shim,向docker engine提供接口,使用UnixSocket通信,協(xié)議是grpc
shim: 負(fù)責(zé)管理單個(gè)容器,啟動(dòng)一個(gè)容器,就會(huì)啟動(dòng)一個(gè)shim進(jìn)程, containerd管理所有容器
runC: 運(yùn)行一個(gè)容器。是基于OCI標(biāo)準(zhǔn)的一個(gè)容器技術(shù)實(shí)現(xiàn),是一個(gè)可以直接創(chuàng)建和運(yùn)行容器的工具。runc直接與容器所依賴的cgroups/kernel等進(jìn)行交互,負(fù)責(zé)容器所需環(huán)境

2.工作流程

docker client發(fā)出創(chuàng)建容器指令,docker engine接到指令后去鏡像倉(cāng)庫(kù)拿到鏡像后,通過(guò)grpc調(diào)用通知docker-containerd啟動(dòng)容器,docker-containerd收到通知后啟動(dòng)shim進(jìn)程,shim進(jìn)程啟動(dòng)后,運(yùn)行runC子進(jìn)程,runcC會(huì)和cgroup,kernel交互,啟動(dòng)容器,然后runC銷(xiāo)毀,shim接管容器并監(jiān)控容器, 整個(gè)容器創(chuàng)建過(guò)程完成

三、鏡像和容器的關(guān)系

鏡像可以理解為一系列封裝好的目錄,容器理解為將這些封裝好的目錄合并掛載,鏡像是靜態(tài)資源,容器是可讀寫(xiě)的,

四、容器應(yīng)用場(chǎng)景

1.環(huán)境一致性
2.CI/CD
3.微服務(wù)
4.彈性伸縮
5.灰度發(fā)布

五、容器與虛擬機(jī)的額區(qū)別
docker架構(gòu)及工作流程

  1. VM 技術(shù)層?面是基于硬件的 hypervisor 層實(shí)現(xiàn)的, 而 container 是基于操作系統(tǒng)上軟件 docker engine 實(shí)現(xiàn)的
  2. VM 要進(jìn)行應(yīng)?用隔離, 必須先創(chuàng)建?一個(gè)新的臃腫的 os, 與其說(shuō)是對(duì)應(yīng)用隔離, 不如說(shuō)是系統(tǒng)隔離
  3. VM 資源消耗?大, 啟動(dòng)慢, 系統(tǒng)隔離, 且由于基于硬件, 所以需要硬件支持虛擬化; Container 資 源消耗小, 啟動(dòng)快, 進(jìn)程隔離, 不用考慮CPU是否支持虛擬化
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI