1.3 Docker 引擎拆分的四個組件功能介紹
docker 項(xiàng)目,自 1.11.0 版本起,docker 引擎由一個單一組件,被拆分為四個項(xiàng)目分別是:
1、docker-daemon;2、containerd;3、containerd-shim;4、runc
Docker 引擎拆分的四個組件各自承擔(dān)不同職責(zé),形成了一個分層協(xié)作的容器生命周期管理架構(gòu):
-
?
dockerd(Docker Daemon)?- ?作用?:對外提供 Docker API(如 CLI 命令、RESTful 接口),接收用戶的操作請求(如創(chuàng)建容器、構(gòu)建鏡像)。
- ?定位?:作為 Docker 的對外入口層,負(fù)責(zé)高層命令解析與資源調(diào)度,但不直接操作容器。
-
?
containerd?- ?作用?:
- 管理容器的生命周期(創(chuàng)建、啟動、暫停、銷毀);
- 管理鏡像分發(fā)(拉取、推送、存儲);
- 調(diào)用底層
containerd-shim執(zhí)行容器操作。
- ?定位?:核心運(yùn)行時管理層,解耦了 Docker Daemon 與底層容器運(yùn)行時,提供標(biāo)準(zhǔn)化接口(gRPC API)供上層調(diào)用。
- ?作用?:
-
?
containerd-shim?- ?作用?:
- 作為容器的運(yùn)行時載體,托管容器進(jìn)程;
- 屏蔽底層運(yùn)行時細(xì)節(jié),確保
containerd無狀態(tài)化(重啟containerd不影響容器運(yùn)行); - 收集并轉(zhuǎn)發(fā)容器退出狀態(tài)。
- ?定位?:適配層,隔離運(yùn)行時與容器管理器,增強(qiáng)穩(wěn)定性與可維護(hù)性。
- ?作用?:
-
?
runc?- ?作用?:
- 根據(jù) ?OCI(Open Container Initiative)標(biāo)準(zhǔn)? 創(chuàng)建和運(yùn)行容器;
- 調(diào)用操作系統(tǒng)內(nèi)核功能(如命名空間、cgroups)實(shí)現(xiàn)容器隔離。
- ?定位?:底層容器運(yùn)行時,僅專注于容器進(jìn)程的啟動/停止,是輕量級標(biāo)準(zhǔn)化工具。
- ?作用?:
四組件協(xié)作流程示例
當(dāng)運(yùn)行 docker run 時:
dockerd接收命令 →containerd解析請求,準(zhǔn)備鏡像和配置 →containerd調(diào)用containerd-shim→containerd-shim啟動runc→runc創(chuàng)建隔離環(huán)境并啟動容器進(jìn)程。
?? ?架構(gòu)優(yōu)勢?:
- ?解耦與模塊化?:各組件專注單一職責(zé),升級/替換更靈活(如替換
runc為其他 OCI 運(yùn)行時);- ?穩(wěn)定性?:
containerd-shim隔離運(yùn)行時故障,避免級聯(lián)崩潰;- ?標(biāo)準(zhǔn)化?:
runc遵循 OCI 規(guī)范,推動容器生態(tài)兼容性。
注:早期 Docker 引擎是單體架構(gòu)(
dockerd直接管理容器),拆分后提升了跨平臺能力和可維護(hù)性。
時間是個偉大的作者,必將給出完美的答案。

浙公網(wǎng)安備 33010602011771號