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