官术网_书友最值得收藏!

1.2 Docker總架構圖

作為Linux平臺上的一種容器的管理引擎,Docker并不像其他大型分布式系統那樣復雜。Docker的源碼總量并不多,而且清晰的源碼結構使得Docker的學習成本并不高。換言之,Docker源碼的學習過程并不枯燥,我們可以從中學到很多東西,如Go語言的運用、Docker架構的設計原理等。Docker對用戶而言是一個簡單的C/S架構,用戶通過客戶端與服務器端建立通信,而Docker的后端是一個松耦合的架構,架構中的模塊各司其職、有機組合,支撐著Docker運行。

Docker的總架構如圖1-1所示。架構中主要的模塊有:DockerClient、DockerDaemon、Docker Registry、Graph、Driver、libcontainer以及Docker Container。

對用戶而言,Docker Client是與Docker Daemon建立通信的最佳途徑。用戶通過Docker Client發起容器的管理請求,請求最終發往Docker Daemon。

Docker Daemon作為Docker架構中的主體部分,首先具備服務端的功能,有能力接收Docker Client發起的請求;其次具備Docker Client請求的處理能力。Docker Daemon內部所有的任務均由Engine來完成,且每一項工作都以一個Job的形式存在。

Docker Daemon需要完成的任務很多,因此Job的種類也很多。若用戶需要下載容器鏡像,Docker Daemon則會創建一個名為“pull”的Job,運行時從Docker Registry中下載鏡像,并通過鏡像管理驅動graphdriver將下載的鏡像存儲在graph中;若用戶需要為Docker容器創建網絡環境,Docker Daemon則會創建一個名“allocate_interface”的Job,通過網絡驅動networkdriver分配網絡接口的資源……

libcontainer是一套獨立的容器管理解決方案,這套解決方案涉及了大量Linux內核方面的特性,如:namespaces、cgroups以及capabilities等。libcontainer很好地抽象了Linux的內核特性,并提供完整、明確的接口給Docker Daemon。

當用戶執行運行容器這個命令之后,一個Docker容器就處于運行狀態,該容器擁有隔離的運行環境、獨立的網絡棧資源以及受限的資源等。

圖1-1 Docker總架構圖

主站蜘蛛池模板: 柳江县| 奇台县| 山丹县| 报价| 宜城市| 陇川县| 正镶白旗| 邓州市| 达州市| 宝坻区| 扬中市| 长阳| 泊头市| 东港市| 巴彦淖尔市| 道孚县| 兰考县| 双柏县| 丹棱县| 湖北省| 左权县| 嘉峪关市| 蓬溪县| 太仆寺旗| 石景山区| 桓台县| 武山县| 汉阴县| 瑞丽市| 兴安盟| 神农架林区| 阿合奇县| 黎城县| 鄢陵县| 定结县| 广饶县| 巴东县| 山丹县| 铁岭市| 莱芜市| 郯城县|