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

3.3 mainDaemon()的具體實現

Docker Daemon的啟動流程圖展示了DockerDaemon的從無到有。通過分析流程圖,我們可以得出一個這樣的結論:區分Docker Daemon與Docker Client的關鍵在于flag參數flDaemon的值。一旦*flDaemon的值為真,則代表docker二進制需要啟動的是Docker Daemon。有關Docker Daemon的所有的工作,都被包含在函數mainDaemon()的具體實現中。

宏觀來講,mainDaemon()的使命是:創建一個守護進程,并保證其正常運行。

從功能的角度來說,mainDaemon()實現了兩部分內容:第一,創建Docker運行環境;第二,服務于Docker Client,接收并處理相應請求(完成Docker Server的初始化)。

從實現細節來分析,mainDaemon()的實現流程主要包含以下步驟:

1)daemon的配置初始化。這部分在init()函數中實現,即在mainDaemon()運行前就執行,但由于這部分內容和mainDaemon()的運行息息相關,可以認為是mainDaemon()運行的先決條件。

2)命令行flag參數檢查。

3)創建engine對象。

4)設置engine的信號捕獲及處理方法。

5)加載builtins。

6)使用goroutine加載daemon對象并運行。

7)打印Docker版本及驅動信息。

8)serveapi的創建與運行。

對于以上內容,本章將一一深入分析。

主站蜘蛛池模板: 宜君县| 刚察县| 板桥市| 囊谦县| 长丰县| 锡林浩特市| 漳浦县| 界首市| 荥阳市| 盐城市| 鸡泽县| 常德市| 天门市| 鲁山县| 高台县| 兴安县| 黄山市| 汕尾市| 赣州市| 积石山| 化州市| 曲阳县| 湘潭县| 会宁县| 北辰区| 连云港市| 马龙县| 桐梓县| 乌兰浩特市| 兴山县| 大渡口区| 百色市| 合江县| 黔东| 阳高县| 阿拉善右旗| 顺义区| 滁州市| 册亨县| 南部县| 陇南市|