您好,登錄后才能下訂單哦!
一、概念
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)
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ū)別
臃腫
的 os, 與其說(shuō)是對(duì)應(yīng)用隔離, 不如說(shuō)是系統(tǒng)隔離免責(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)容。