docker架構及工作流程

一、概念
docker是開源容器引擎,基於cgroup,namespace,unionFS等技術實現,對應用進行封裝的虛擬化技術

什麼是cgroup?
對系統資源限制,創建容器的過程其實就是在創建進程,對資源的分配和維護使用cgroup來管理,包括cpu,內存,io等?
什麼是namespace?
創建容器時,對容器來說就是一個全新的系統,容器內的文件系統要和宿主機文件系統隔離,網絡空間隔離,用戶權限隔離,這些隔離操作都是有namespace 來管理完成的
什麼是unionFS?
聯合文件系統,簡單理解就是多個目錄結構合併成一個,而各個目錄結構本身物理位置並沒有變化。

二、架構
docker架構及工作流程
1.C/S架構

組件:
docker cli: docker客戶端,用來管理docker,向docker發送指令的工具
docker engine: 拉取推送鏡像,對容器操作相關的api的最上層封裝,直接面向client
image repository: 註冊中信,存儲鏡像的地方
Containerd: 是一個守護進程,負責管理shim,向docker engine提供接口,使用UnixSocket通信,協議是grpc
shim: 負責管理單個容器,啓動一個容器,就會啓動一個shim進程, containerd管理所有容器
runC: 運行一個容器。是基於OCI標準的一個容器技術實現,是一個可以直接創建和運行容器的工具。runc直接與容器所依賴的cgroups/kernel等進行交互,負責容器所需環境

2.工作流程

docker client發出創建容器指令,docker engine接到指令後去鏡像倉庫拿到鏡像後,通過grpc調用通知docker-containerd啓動容器,docker-containerd收到通知後啓動shim進程,shim進程啓動後,運行runC子進程,runcC會和cgroup,kernel交互,啓動容器,然後runC銷燬,shim接管容器並監控容器, 整個容器創建過程完成

三、鏡像和容器的關係

鏡像可以理解爲一系列封裝好的目錄,容器理解爲將這些封裝好的目錄合併掛載,鏡像是靜態資源,容器是可讀寫的,

四、容器應用場景

1.環境一致性
2.CI/CD
3.微服務
4.彈性伸縮
5.灰度發佈

五、容器與虛擬機的額區別
docker架構及工作流程

  1. VM 技術層⾯面是基於硬件的 hypervisor 層實現的, 而 container 是基於操作系統上軟件 docker engine 實現的
  2. VM 要進行應⽤用隔離, 必須先創建⼀一個新的臃腫的 os, 與其說是對應用隔離, 不如說是系統隔離
  3. VM 資源消耗⼤大, 啓動慢, 系統隔離, 且由於基於硬件, 所以需要硬件支持虛擬化; Container 資 源消耗小, 啓動快, 進程隔離, 不用考慮CPU是否支持虛擬化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章