Docker基礎架構
Docker目前采用了标準的C/S架構,包含客戶端、服務端兩大核心組件,同時通過鏡像倉庫來存儲鏡像。客戶端和服務器既可以運行在一台機器上,可以可以通過socket或RESTful API來進行通信。架構拓撲如下:
-
服務端
Docker服務端一般在Docker Host後台運行,dockerd作爲服務端接受來自客戶端的請求,并通過containerd具體處理與容器相關的請求,包括創建、運行,删除容器等。服務器端主要包含四個組件:
-
dockerd:爲客戶端提供RESTful API,響應來自客戶端的請求,采用模塊化的架構,通過專門的Engine模塊來分發管理各個來自客戶端的任務。可以獨立升級;
-
docker-proxy:是dockerd的子進程,當需要進行容器端口映射時,docker-proxy完成網絡映射配置;
-
containerd:是dockerd的子進程,提供gRPC接口響應來自dockerd的請求,對下管理runC鏡像和容器環境。可以獨立升級;
-
containerd-shim:是dockerd的子進程,爲runC容器提供支持,同時作爲容器内進程的根進程。
-
runC:是從Docker公司開源的libcontainer項目演化而來,目前作爲一種具體的開放容器标準實現加入Open Container Initiavie(OCI)。runC已經支持了Linux系統中容器相關技術棧,同時正在實現對其他操作系統的兼容。
-
客戶端
Docker客戶端爲用提供一系列可執行命令,使用這些命令可實現與Docker服務端交換。