注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)Docker源碼分析

Docker源碼分析

Docker源碼分析

定 價:¥59.00

作 者: 孫宏亮
出版社: 機(jī)械工業(yè)出版社
叢編項:
標(biāo) 簽: 程序設(shè)計 計算機(jī)/網(wǎng)絡(luò)

ISBN: 9787111510727 出版時間: 2015-08-01 包裝:
開本: 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書是一本引導(dǎo)讀者深入了解Docker實(shí)現(xiàn)原理的技術(shù)普及讀物,主要目標(biāo)是通過對Docker架構(gòu)和源代碼的詳細(xì)講解和解剖,幫助讀者對Docker的底層實(shí)現(xiàn)有一個全面的理解。本書的內(nèi)容主要集中于三部分:Docker的架構(gòu)、Docker的模塊,以及Docker的三駕馬車Swarm、Machine和Compose。第一部分(第1章)主要從宏觀的角度和讀者一起領(lǐng)略Docker的架構(gòu)設(shè)計,并初步介紹架構(gòu)中各模塊的職責(zé)。第二部分(第2~14章)是本書的主體部分,主要針對Docker中多個重要的模塊進(jìn)行具體深入分析,包括DockerClient、DockerDaemon、DockerServer、Docker網(wǎng)絡(luò)、Docker鏡像、Docker容器等。讀者可以發(fā)現(xiàn),Docker的模塊之間耦合度非常低,很適合循序漸進(jìn),層層深入。第2~8章主要從Docker軟件的架構(gòu)入手,勾勒骨架;第9~11章集中于Docker鏡像技術(shù),夯實(shí)基礎(chǔ);第12~14章則進(jìn)一步分析Docker容器的始末,闡述本質(zhì)。第三部分(第15~17章)介紹Docker生態(tài)三駕馬車—Swarm、Machine和Compose。Docker擁有強(qiáng)大的單機(jī)能力,三駕馬車可以很好地補(bǔ)充Docker的跨主機(jī)能力以及部署能力。讀者可以通過這幾章感受Docker生態(tài)中其他功能強(qiáng)大的軟件。

作者簡介

暫缺《Docker源碼分析》作者簡介

圖書目錄

Contents 目  錄
贊譽(yù)

前言
第1章 Docker架構(gòu) 1
1.1 引言 1
1.2 Docker總架構(gòu)圖 2
1.3 Docker各模塊功能與實(shí)現(xiàn)分析 3
1.3.1 Docker Client 4
1.3.2 Docker Daemon 4
1.3.3 Docker Registry 6
1.3.4 Graph 7
1.3.5 Driver 7
1.3.6 libcontainer 10
1.3.7 Docker Container 10
1.4 Docker運(yùn)行案例分析 11
1.4.1 docker pull 11
1.4.2 docker run 12
1.5 總結(jié) 14
第2章 Docker Client創(chuàng)建與命令執(zhí)行 15
2.1 引言 15
2.2 創(chuàng)建Docker Client 16
2.2.1 Docker命令的flag參數(shù)解析 17
2.2.2 處理flag信息并收集Docker Client的配置信息 20
2.2.3 如何創(chuàng)建Docker Client 22
2.3 Docker命令執(zhí)行 24
2.3.1 Docker Client解析請求命令 24
2.3.2 Docker Client執(zhí)行請求命令 25
2.4 總結(jié) 27
第3章 啟動Docker Daemon 28
3.1 引言 28
3.2 Docker Daemon的啟動流程 29
3.3 mainDaemon()的具體實(shí)現(xiàn) 30
3.3.1 配置初始化 30
3.3.2 flag參數(shù)檢查 32
3.3.3 創(chuàng)建engine對象 33
3.3.4 設(shè)置engine的信號捕獲 34
3.3.5 加載builtins 35
3.3.6 使用goroutine加載daemon
 對象并運(yùn)行 38
3.3.7 打印Docker版本及驅(qū)動信息 41
3.3.8 serveapi的創(chuàng)建與運(yùn)行 42
3.4 總結(jié) 42
第4章 Docker Daemon之NewDaemon實(shí)現(xiàn) 43
4.1 引言 43
4.2 NewDaemon具體實(shí)現(xiàn) 44
4.3 應(yīng)用配置信息 45
4.3.1 配置Docker容器的MTU 45
4.3.2 檢測網(wǎng)橋配置信息 46
4.3.3 查驗容器間的通信配置 46
4.3.4 處理網(wǎng)絡(luò)功能配置 47
4.3.5 處理PID文件配置 47
4.4 檢測系統(tǒng)支持及用戶權(quán)限 48
4.5 配置工作路徑 49
4.6 加載并配置graphdriver 49
4.6.1 創(chuàng)建graphdriver 49
4.6.2 驗證btrfs與SELinux的兼容性 51
4.6.3 創(chuàng)建容器倉庫目錄 51
4.6.4 遷移容器至aufs類型 51
4.6.5 創(chuàng)建鏡像graph 52
4.6.6 創(chuàng)建volumesdriver以及volumes graph 53
4.6.7 創(chuàng)建TagStore 53
4.7 配置Docker Daemon網(wǎng)絡(luò)環(huán)境 54
4.7.1 創(chuàng)建Docker網(wǎng)絡(luò)設(shè)備 55
4.7.2 啟用iptables功能 55
4.7.3 啟用系統(tǒng)數(shù)據(jù)包轉(zhuǎn)發(fā)功能 56
4.7.4 創(chuàng)建DOCKER鏈 56
4.7.5 注冊處理方法至Engine 57
4.8 創(chuàng)建graphdb并初始化 57
4.9 創(chuàng)建execdriver 58
4.10 創(chuàng)建daemon實(shí)例 59
4.11 檢測DNS配置 60
4.12 啟動時加載已有Docker容器 61
4.13 設(shè)置shutdown的處理方法 61
4.14 返回daemon對象實(shí)例 62
4.15 總結(jié) 62
第5章 Docker Server的創(chuàng)建 63
5.1 引言 63
5.2 Docker Server創(chuàng)建流程 63
5.2.1 創(chuàng)建名為“serveapi”的Job 64
5.2.2 配置Job環(huán)境變量 64
5.2.3 運(yùn)行Job 65
5.3 ServeApi運(yùn)行流程 65
5.4 ListenAndServe實(shí)現(xiàn) 68
5.4.1 創(chuàng)建router路由實(shí)例 69
5.4.2 創(chuàng)建listener監(jiān)聽實(shí)例 74
5.4.3 創(chuàng)建http.Server 74
5.4.4 啟動API服務(wù) 75
5.5 總結(jié) 75
第6章 Docker Daemon網(wǎng)絡(luò) 76
6.1 引言 76
6.2 Docker Daemon網(wǎng)絡(luò)介紹 77
6.3 Docker Daemon網(wǎng)絡(luò)配置接口 78
6.4 Docker Daemon網(wǎng)絡(luò)初始化 79
6.4.1 啟動Docker Daemon傳遞flag參數(shù) 80
6.4.2 解析網(wǎng)絡(luò)flag參數(shù) 80
6.4.3 預(yù)處理flag參數(shù) 80
6.4.4 確定Docker網(wǎng)絡(luò)模式 81
6.5 創(chuàng)建Docker網(wǎng)橋 82
6.5.1 提取環(huán)境變量 83
6.5.2 確定Docker網(wǎng)橋設(shè)備名 83
6.5.3 查找bridgeIface網(wǎng)橋設(shè)備 83
6.5.4 bridgeIface已創(chuàng)建 84
6.5.5 bridgeIface未創(chuàng)建 85
6.5.6 獲取網(wǎng)橋設(shè)備的網(wǎng)絡(luò)地址 88
6.5.7 配置Docker Daemon的iptables 88
6.5.8 配置網(wǎng)絡(luò)設(shè)備間數(shù)據(jù)報轉(zhuǎn)發(fā)功能 88
6.5.9 注冊網(wǎng)絡(luò)Handler 89
6.6 總結(jié) 89
第7章 Docker容器網(wǎng)絡(luò) 90
7.1 引言 90
7.2 Docker容器網(wǎng)絡(luò)模式 93
7.2.1 bridge橋接模式 93
7.2.2 host模式 95
7.2.3 other container模式 96
7.2.4 none模式 97
7.3 Docker Client配置容器網(wǎng)絡(luò)模式 97
7.3.1 使用Docker Client 98
7.3.2 runconfig包解析 98
7.3.3 CmdRun執(zhí)行 102
7.4 Docker Daemon創(chuàng)建容器網(wǎng)絡(luò)流程 103
7.4.1 創(chuàng)建容器之網(wǎng)絡(luò)配置 103
7.4.2 啟動容器之網(wǎng)絡(luò)配置 105
7.5 execdriver網(wǎng)絡(luò)執(zhí)行流程 111
7.5.1 創(chuàng)建libcontainer的Config對象 112
7.5.2 調(diào)用libcontainer的namespaces啟動容器 116
7.6 libcontainer實(shí)現(xiàn)內(nèi)核態(tài)網(wǎng)絡(luò)配置 117
7.6.1 創(chuàng)建exec.Cmd 118
7.6.2 啟動exec.Cmd創(chuàng)建進(jìn)程 119
7.6.3 為容器進(jìn)程初始化網(wǎng)絡(luò)環(huán)境 120
7.7 總結(jié) 122
第8章 Docker鏡像 123
8.1 引言 123
8.2 Docker鏡像介紹 124
8.3 rootfs 124
8.4 Union Mount 125
8.5 image 127
8.6 layer 128
8.7 總結(jié) 129
第9章 Docker鏡像下載 130
9.1 引言 130
9.2 Docker鏡像下載流程 131
9.3 Docker Client 131
9.3.1 解析鏡像參數(shù) 132
9.3.2 配置認(rèn)證信息 136
9.3.3 發(fā)送API請求 137
9.4 Docker Server 138
9.4.1 解析請求參數(shù) 138
9.4.2 創(chuàng)建并配置Job 139
9.4.3 觸發(fā)執(zhí)行Job 139
9.5 Docker Daemon 140
9.5.1 解析Job參數(shù) 140
9.5.2 創(chuàng)建session對象 141
9.5.3 執(zhí)行鏡像下載 142
9.6 總結(jié) 147
第10章 Docker鏡像存儲 149
10.1 引言 149
10.2 鏡像注冊 150
10.3 驗證鏡像ID 151
10.4 創(chuàng)建鏡像路徑 152
10.4.1 創(chuàng)建mnt、diff和layers子目錄 153
10.4.2 掛載祖先鏡像并返回根目錄 155
10.5 存儲鏡像內(nèi)容 157
10.5.1 解壓鏡像內(nèi)容 158
10.5.2 收集鏡像大小并記錄 160
10.5.3 存儲jsonData信息 161
10.6 注冊鏡像ID 162
10.7 總結(jié) 163
第11章 docker build實(shí)現(xiàn) 164
11.1 引言 164
11.2 docker build執(zhí)行流程 165
11.2.1 Docker Client與docker build 166
11.2.2 Docker Server與docker build 170
11.2.3 Docker Daemon與docker build 171
11.3 Dockerfile命令解析流程 174
11.4 Dockerfile命令分析 177
11.4.1 FROM命令 177
11.4.2 RUN命令 178
11.4.3 ENV命令 182
11.5 總結(jié) 182
第12章 Docker容器創(chuàng)建 183
12.1 引言 183
12.2 Docker容器運(yùn)行流程 184
12.3 Docker Daemon創(chuàng)建容器對象 185
12.3.1 LookupImage 186
12.3.2 CheckDepth 188
12.3.3 mergeAndVerifyConfig 188
12.3.4 newContainer 189
12.3.5 createRootfs 190
12.3.6 ToDisk 190
12.3.7 Register 191
12.4 Docker Daemon啟動容器 191
12.4.1 setupContainerDns 192
12.4.2 Mount 193
12.4.3 initializeNetworking 194
12.4.4 verifyDaemonSetting 194
12.4.5 prepareVolumesForContainer 195
12.4.6 setupLinkedContainers 196
12.4.7 setupWorkingDirectory 199
12.4.8 createDaemonEnvironment 199
12.4.9 populateCommand 200
12.4.10 setupMountsForContainer 200
12.4.11 waitForStart 201
12.5 總結(jié) 202
第13章 dockerinit啟動 203
13.1 引言 203
13.2 dockerinit介紹 204
13.2.1 dockerinit初始化內(nèi)容 204
13.2.2 dockerinit與Docker Daemon 204
13.3 dockerinit執(zhí)行入口 205
13.3.1 createCommand分析 205
13.3.2 namespace.exec 207
13.4 dockerinit運(yùn)行 208
13.4.1 reexec.Init()的分析 208
13.4.2 dockerinit的執(zhí)行流程 210
13.5 libcontainer的運(yùn)行 211
13.5.1 Docker Daemon設(shè)置cgroups參數(shù) 213
13.5.2 Docker Daemon創(chuàng)建網(wǎng)絡(luò)棧資源 213
13.5.3 dockerinit配置網(wǎng)絡(luò)棧 213
13.5.4 dockerinit初始化mount namespace 215
13.5.5 dockerinit完成namespace配置 215
13.5.6 dockerinit執(zhí)行用戶命令Entrypoint 217
13.6 總結(jié) 218
第14章 libcontainer介紹 219
14.1 引言 219
14.2 Docker、libcontainer以及LXC的關(guān)系 220
14.3 libcontainer模塊分析 221
14.3.1 namespace 221
14.3.2 cgroup 224
14.3.3 網(wǎng)絡(luò) 225
14.3.4 掛載 226
14.3.5 設(shè)備 227
14.3.6 nsinit 227
14.3.7 其他模塊 227
14.4 總結(jié) 228
第15章 Swarm架構(gòu)設(shè)計與實(shí)現(xiàn) 229
15.1 引言 229
15.2 Swarm架構(gòu) 230
15.2.1 Swarm Node 231
15.2.2 Docker Node 231
15.2.3 node discovery 231
15.2.4 scheduler 232
15.3 Swarm命令 232
15.3.1 swarm create 232
15.3.2 swarm manage 232
15.3.3 swarm join 233
15.3.4 swarm list 234
15.4 總結(jié) 234
第16章 Machine架構(gòu)設(shè)計與實(shí)現(xiàn) 235
16.1 引言 235
16.2 Machine架構(gòu) 236
16.2.1 Machine 237
16.2.2 Store 237
16.2.3 Host 237
16.2.4 Driver 238
16.2.5 Provisioner 238
16.2.6 Machine運(yùn)行流程 239
16.3 Machine與Swarm的結(jié)合 240
16.4 總結(jié) 241
第17章 Compose架構(gòu)設(shè)計與實(shí)現(xiàn) 242
17.1 引言 242
17.2 Compose介紹 242
17.3 Compose架構(gòu) 243
17.4 Compose評價 246
17.4.1 Compose單機(jī)能力 246
17.4.2 Compose跨節(jié)點(diǎn)能力 247
17.4.3 Compose與Swarm 247
17.5 總結(jié) 247

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號