Docker基礎架構

2022-02-16 欄目:技術知識

Docker目前采用了标準的C/S架構,包含客戶端、服務端兩大核心組件,同時通過鏡像倉庫來存儲鏡像。客戶端和服務器既可以運行在一台機器上,可以可以通過socket或RESTful API來進行通信。架構拓撲如下:

Docker架構拓撲

  1. 服務端

    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系統中容器相關技術棧,同時正在實現對其他操作系統的兼容。

  1. 客戶端

    Docker客戶端爲用提供一系列可執行命令,使用這些命令可實現與Docker服務端交換。