您好,登錄后才能下訂單哦!
一、概念
docker是開源容器引擎,基于cgroup,namespace,unionFS等技術實現,對應用進行封裝的虛擬化技術
什么是cgroup?
對系統資源限制,創建容器的過程其實就是在創建進程,對資源的分配和維護使用cgroup來管理,包括cpu,內存,io等?
什么是namespace?
創建容器時,對容器來說就是一個全新的系統,容器內的文件系統要和宿主機文件系統隔離,網絡空間隔離,用戶權限隔離,這些隔離操作都是有namespace 來管理完成的
什么是unionFS?
聯合文件系統,簡單理解就是多個目錄結構合并成一個,而各個目錄結構本身物理位置并沒有變化。
二、架構
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.灰度發布
五、容器與虛擬機的額區別
臃腫
的 os, 與其說是對應用隔離, 不如說是系統隔離免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。