docker daemon的意思為:Docker的守護進程;daemon的主要功能包括鏡像管理、鏡像構建、REST API、身份驗證、安全、核心網(wǎng)絡以及編排。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、docker-1.13.1版、Dell G3電腦。
Docker Daemon
Daemon是Docker的守護進程,Docker Client通過命令行與Docker Damon通信,完成Docker相關操作。
daemon的主要功能包括鏡像管理、鏡像構建、REST API、身份驗證、安全、核心網(wǎng)絡以及編排。
工作機制
Docker Daemon可以認為是通過Docker Server模塊接受Docker Client的請求,并在Engine中處理請求,然后根據(jù)請求類型,創(chuàng)建出指定的Job并運行,運行過程的作用有以下幾種可能:向Docker Registry獲取鏡像,通過graphdriver執(zhí)行容器鏡像的本地化操作,通過networkdriver執(zhí)行容器網(wǎng)絡環(huán)境的配置,通過execdriver執(zhí)行容器內(nèi)部運行的執(zhí)行工作等。
修改Docker Daemon
Docker Daemon有不同的修改方式:命令行修改,修改啟動項,修改配置文件。
-
其中僅僅只是研究或一次使用Docker Daemon的不同選項時,可以通過命令行的方式,此時Docker Daemon運行在前端,日志直接打印在終端上;
-
當Docker Daemon的配置很穩(wěn)定,不常修改時,可以將Docker Daemon的選項放在啟動項中;
-
當Docker Daemon的配置需要定時修改時,就可以把變化的選項放在配置文件中。
啟動流程
由于Docker Daemon和Docker Client的啟動都是通過可執(zhí)行文件docker來完成的,因此兩者的啟動流程非常相似。Docker可執(zhí)行文件運行時,運行代碼通過不同的命令行flag參數(shù),區(qū)分兩者,并最終運行兩者各自相應的部分。
啟動Docker Daemon時,一般可以使用以下命令:docker –daemon=true; docker –d; docker –d=true等。接著由docker的main()函數(shù)來解析以上命令的相應flag參數(shù),并最終完成Docker Daemon的啟動。
通過Docker Daemon的流程圖,可以得出一個這樣的結論:有關Docker Daemon的所有的工作,都被包含在mainDaemon()方法的實現(xiàn)中。
宏觀來講,mainDaemon()完成創(chuàng)建一個daemon進程,并使其正常運行。
從功能的角度來說,mainDaemon()實現(xiàn)了兩部分內(nèi)容:第一,創(chuàng)建Docker運行環(huán)境;第二,服務于Docker Client,接收并處理相應請求。
從實現(xiàn)細節(jié)來講,mainDaemon()的實現(xiàn)過程主要包含以下步驟:
1)daemon的配置初始化(這部分在init()函數(shù)中實現(xiàn),即在mainDaemon()運行前就執(zhí)行,但由于這部分內(nèi)容和mainDaemon()的運行息息相關,故可認為是mainDaemon()運行的先決條件;
2)命令行flag參數(shù)檢查;
3)創(chuàng)建engine對象;
4)設置engine的信號捕獲及處理方法;
5)加載builtins;
6)使用goroutine加載daemon對象并運行;
7)打印Docker版本及驅(qū)動信息;
8)Job之”serveapi”的創(chuàng)建與運行。
推薦學習:《docker視頻教程》