閱讀932 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《容器技術係列》一3.1 引言

本節書摘來異步社區《容器技術係列》一書中的第3章 ,第3.1節,孫宏亮 著, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。

3.1 引言

自Docker誕生以來,便引領了輕量級虛擬化容器領域的技術熱潮。在這一潮流下,Google、IBM、Redhat等業界翹楚紛紛加入Docker陣營。雖然目前Docker仍主要基於Linux平台,但是Microsoft卻多次宣布對Docker的支持,從先前宣布的Azure支持Docker與Kubernetes,到如今宣布的下一代Windows Server原生態支持Docker。Microsoft的這一係列舉措多少喻示著向Linux世界的妥協,當然這也不得不讓世人對Docker的巨大影響力有重新的認識。
Docker的影響力不言而喻,但如果需要深入學習Docker的內部實現,最重要的就是理解Docker Daemon。在Docker架構中,Docker Client通過特定的協議與Docker Daemon進行通信,而Docker Daemon主要承載了Docker運行過程中的大部分工作。
Docker Daemon是Docker架構中運行在後台的守護進程,大致可以分為Docker Server、Engine和Job三部分。三者的關係大致如下:Docker Daemon通過Docker Server模塊接收Docker Client的請求,並在Engine中處理請求,然後根據請求類型,創建出指定的Job並運行。由於用戶的請求不同,DockerDaemon會創建不同的Job來完成任務,如:用戶發起鏡像下載請求,DockerDaemon創建名為“pull”的Job;用戶發起啟動容器的請求,DockerDaemon創建名為“start”的Job……
Docker Daemon的架構如圖3-1所示。
本章從源碼的角度,主要分析Docker Daemon的啟動流程。由於Docker Daemon和Docker Client的啟動流程有很多的相似之處,故本章不再贅述Docker Daemon啟動的前期工作、flag參數的解析等內容,著重分析Docker Daemon啟動流程中最為重要的環節:創建Daemon過程中mainDaemon()的實現。

image

最後更新:2017-06-21 15:02:27

  上一篇:go  《容器技術係列》一3.2 Docker Daemon的啟動流程
  下一篇:go  《容器技術係列》一2.4 總結