Docker基礎(chǔ)架構(gòu)
Docker目前采用了標(biāo)準(zhǔn)的C/S架構(gòu),包含客戶端、服務(wù)端兩大核心組件,同時(shí)通過(guò)鏡像倉(cāng)庫(kù)來(lái)存儲(chǔ)鏡像??蛻舳撕头?wù)器既可以運(yùn)行在一臺(tái)機(jī)器上,可以可以通過(guò)socket或RESTful API來(lái)進(jìn)行通信。架構(gòu)拓?fù)淙缦拢?/span>

-
服務(wù)端
Docker服務(wù)端一般在Docker Host后臺(tái)運(yùn)行,dockerd作為服務(wù)端接受來(lái)自客戶端的請(qǐng)求,并通過(guò)containerd具體處理與容器相關(guān)的請(qǐng)求,包括創(chuàng)建、運(yùn)行,刪除容器等。服務(wù)器端主要包含四個(gè)組件:
-
dockerd:為客戶端提供RESTful API,響應(yīng)來(lái)自客戶端的請(qǐng)求,采用模塊化的架構(gòu),通過(guò)專門的Engine模塊來(lái)分發(fā)管理各個(gè)來(lái)自客戶端的任務(wù)??梢元?dú)立升級(jí);
-
docker-proxy:是dockerd的子進(jìn)程,當(dāng)需要進(jìn)行容器端口映射時(shí),docker-proxy完成網(wǎng)絡(luò)映射配置;
-
containerd:是dockerd的子進(jìn)程,提供gRPC接口響應(yīng)來(lái)自dockerd的請(qǐng)求,對(duì)下管理runC鏡像和容器環(huán)境??梢元?dú)立升級(jí);
-
containerd-shim:是dockerd的子進(jìn)程,為runC容器提供支持,同時(shí)作為容器內(nèi)進(jìn)程的根進(jìn)程。
-
runC:是從Docker公司開(kāi)源的libcontainer項(xiàng)目演化而來(lái),目前作為一種具體的開(kāi)放容器標(biāo)準(zhǔn)實(shí)現(xiàn)加入Open Container Initiavie(OCI)。runC已經(jīng)支持了Linux系統(tǒng)中容器相關(guān)技術(shù)棧,同時(shí)正在實(shí)現(xiàn)對(duì)其他操作系統(tǒng)的兼容。
-
客戶端
Docker客戶端為用提供一系列可執(zhí)行命令,使用這些命令可實(shí)現(xiàn)與Docker服務(wù)端交換。