- Docker源碼分析
- 孫宏亮
- 7字
- 2018-12-31 20:27:03
第3章 啟動(dòng)Docker Daemon
3.1 引言
自Docker誕生以來(lái),便引領(lǐng)了輕量級(jí)虛擬化容器領(lǐng)域的技術(shù)熱潮。在這一潮流下,Google、IBM、Redhat等業(yè)界翹楚紛紛加入Docker陣營(yíng)。雖然目前Docker仍主要基于Linux平臺(tái),但是Microsoft卻多次宣布對(duì)Docker的支持,從先前宣布的Azure支持Docker與Kubernetes,到如今宣布的下一代Windows Server原生態(tài)支持Docker。Microsoft的這一系列舉措多少喻示著向Linux世界的妥協(xié),當(dāng)然這也不得不讓世人對(duì)Docker的巨大影響力有重新的認(rèn)識(shí)。
Docker的影響力不言而喻,但如果需要深入學(xué)習(xí)Docker的內(nèi)部實(shí)現(xiàn),最重要的就是理解Docker Daemon。在Docker架構(gòu)中,Docker Client通過特定的協(xié)議與Docker Daemon進(jìn)行通信,而Docker Daemon主要承載了Docker運(yùn)行過程中的大部分工作。
Docker Daemon是Docker架構(gòu)中運(yùn)行在后臺(tái)的守護(hù)進(jìn)程,大致可以分為Docker Server、Engine和Job三部分。三者的關(guān)系大致如下:Docker Daemon通過Docker Server模塊接收Docker Client的請(qǐng)求,并在Engine中處理請(qǐng)求,然后根據(jù)請(qǐng)求類型,創(chuàng)建出指定的Job并運(yùn)行。由于用戶的請(qǐng)求不同,DockerDaemon會(huì)創(chuàng)建不同的Job來(lái)完成任務(wù),如:用戶發(fā)起鏡像下載請(qǐng)求,DockerDaemon創(chuàng)建名為“pull”的Job;用戶發(fā)起啟動(dòng)容器的請(qǐng)求,DockerDaemon創(chuàng)建名為“start”的Job……
Docker Daemon的架構(gòu)如圖3-1所示。
本章從源碼的角度,主要分析Docker Daemon的啟動(dòng)流程。由于Docker Daemon和Docker Client的啟動(dòng)流程有很多的相似之處,故本章不再贅述Docker Daemon啟動(dòng)的前期工作、flag參數(shù)的解析等內(nèi)容,著重分析Docker Daemon啟動(dòng)流程中最為重要的環(huán)節(jié):創(chuàng)建Daemon過程中mainDaemon()的實(shí)現(xiàn)。

圖3-1 DockerDaemon架構(gòu)示意圖
- MacTalk 跨越邊界
- VMware vSphere 7.0云平臺(tái)運(yùn)維與管理(第2版)
- 網(wǎng)絡(luò)空間測(cè)繪技術(shù)與實(shí)踐:讓互聯(lián)網(wǎng)情報(bào)服務(wù)于網(wǎng)絡(luò)安全
- Docker源碼分析
- Android游戲開發(fā)大全
- 軟件需求分析實(shí)戰(zhàn)
- AIDevOps:智能微服務(wù)開發(fā)、運(yùn)維原理與實(shí)踐
- 深入淺出數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- 負(fù)載均衡:高并發(fā)網(wǎng)關(guān)設(shè)計(jì)原理與實(shí)踐
- 嵌入式軟件調(diào)試技術(shù)
- Spring in Action(第二版)中文版
- Kubernetes Operator開發(fā)進(jìn)階
- 移動(dòng)設(shè)計(jì)
- 云原生測(cè)試實(shí)戰(zhàn)
- 云原生Kubernetes全棧架構(gòu)師實(shí)戰(zhàn)