本書是一本引導讀者深入了解Docker實現原理的技術普及讀物,主要目標是通過對Docker架構和原始碼的詳細講解和解剖,幫助讀者對Docker的底層實現有一個全面的理解。
基本介紹
- 作品名稱:Docker源碼分析
- 創作年代:2015-8-1
- 作品出處:機械工業出版社
- 作者:孫宏亮
- 叢書:容器技術系列
- ISBN:9787111510727
- 裝幀:平裝
- 定價:59.00
- 頁數:164
目錄
讚譽
序
前言
第1章 Docker架構 1
1.1 引言 1
1.2 Docker總架構圖 2
1.3 Docker各模組功能與實現分析 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運行案例分析 11
1.4.1 docker pull 11
1.4.2 docker run 12
1.5 總結 14
第2章 Docker Client創建與命令執行 15
2.1 引言 15
2.2 創建Docker Client 16
2.2.1 Docker命令的flag參數解析 17
2.2.2 處理flag信息並收集Docker Client的配置信息 20
2.2.3 如何創建Docker Client 22
2.3 Docker命令執行 24
2.3.1 Docker Client解析請求命令 24
2.3.2 Docker Client執行請求命令 25
2.4 總結 27
第3章 啟動Docker Daemon 28
3.1 引言 28
3.2 Docker Daemon的啟動流程 29
3.3 mainDaemon()的具體實現 30
3.3.1 配置初始化 30
3.3.2 flag參數檢查 32
3.3.3 創建engine對象 33
3.3.4 設定engine的信號捕獲 34
3.3.5 載入builtins 35
3.3.6 使用goroutine載入daemon
對象並運行 38
3.3.7 列印Docker版本及驅動信息 41
3.3.8 serveapi的創建與運行 42
3.4 總結 42
第4章 Docker Daemon之NewDaemon實現 43
4.1 引言 43
4.2 NewDaemon具體實現 44
4.3 套用配置信息 45
4.3.1 配置Docker容器的MTU 45
4.3.2 檢測網橋配置信息 46
4.3.3 查驗容器間的通信配置 46
4.3.4 處理網路功能配置 47
4.3.5 處理PID檔案配置 47
4.4 檢測系統支持及用戶許可權 48
4.5 配置工作路徑 49
4.6 載入並配置graphdriver 49
4.6.1 創建graphdriver 49
4.6.2 驗證btrfs與SELinux的兼容性 51
4.6.3 創建容器倉庫目錄 51
4.6.4 遷移容器至aufs類型 51
4.6.5 創建鏡像graph 52
4.6.6 創建volumesdriver以及volumes graph 53
4.6.7 創建TagStore 53
4.7 配置Docker Daemon網路環境 54
4.7.1 創建Docker網路設備 55
4.7.2 啟用iptables功能 55
4.7.3 啟用系統數據包轉發功能 56
4.7.4 創建DOCKER鏈 56
4.7.5 註冊處理方法至Engine 57
4.8 創建graphdb並初始化 57
4.9 創建execdriver 58
4.10 創建daemon實例 59
4.11 檢測DNS配置 60
4.12 啟動時載入已有Docker容器 61
4.13 設定shutdown的處理方法 61
4.14 返回daemon對象實例 62
4.15 總結 62
第5章 Docker Server的創建 63
5.1 引言 63
5.2 Docker Server創建流程 63
5.2.1 創建名為“serveapi”的Job 64
5.2.2 配置Job環境變數 64
5.2.3 運行Job 65
5.3 ServeApi運行流程 65
5.4 ListenAndServe實現 68
5.4.1 創建router路由實例 69
5.4.2 創建listener監聽實例 74
5.4.3 創建http.Server 74
5.4.4 啟動API服務 75
5.5 總結 75
第6章 Docker Daemon網路 76
6.1 引言 76
6.2 Docker Daemon網路介紹 77
6.3 Docker Daemon網路配置接口 78
6.4 Docker Daemon網路初始化 79
6.4.1 啟動Docker Daemon傳遞flag參數 80
6.4.2 解析網路flag參數 80
6.4.3 預處理flag參數 80
6.4.4 確定Docker網路模式 81
6.5 創建Docker網橋 82
6.5.1 提取環境變數 83
6.5.2 確定Docker網橋設備名 83
6.5.3 查找bridgeIface網橋設備 83
6.5.4 bridgeIface已創建 84
6.5.5 bridgeIface未創建 85
6.5.6 獲取網橋設備的網路地址 88
6.5.7 配置Docker Daemon的iptables 88
6.5.8 配置網路設備間數據報轉發功能 88
6.5.9 註冊網路Handler 89
6.6 總結 89
第7章 Docker容器網路 90
7.1 引言 90
7.2 Docker容器網路模式 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配置容器網路模式 97
7.3.1 使用Docker Client 98
7.3.2 runconfig包解析 98
7.3.3 CmdRun執行 102
7.4 Docker Daemon創建容器網路流程 103
7.4.1 創建容器之網路配置 103
7.4.2 啟動容器之網路配置 105
7.5 execdriver網路執行流程 111
7.5.1 創建libcontainer的Config對象 112
7.5.2 調用libcontainer的namespaces啟動容器 116
7.6 libcontainer實現核心態網路配置 117
7.6.1 創建exec.Cmd 118
7.6.2 啟動exec.Cmd創建進程 119
7.6.3 為容器進程初始化網路環境 120
7.7 總結 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 總結 129
第9章 Docker鏡像下載 130
9.1 引言 130
9.2 Docker鏡像下載流程 131
9.3 Docker Client 131
9.3.1 解析鏡像參數 132
9.3.2 配置認證信息 136
9.3.3 傳送API請求 137
9.4 Docker Server 138
9.4.1 解析請求參數 138
9.4.2 創建並配置Job 139
9.4.3 觸發執行Job 139
9.5 Docker Daemon 140
9.5.1 解析Job參數 1409.5.2 創建session對象 141
9.5.3 執行鏡像下載 142
9.6 總結 147
讚譽
序
前言
第1章 Docker架構 1
1.1 引言 1
1.2 Docker總架構圖 2
1.3 Docker各模組功能與實現分析 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運行案例分析 11
1.4.1 docker pull 11
1.4.2 docker run 12
1.5 總結 14
第2章 Docker Client創建與命令執行 15
2.1 引言 15
2.2 創建Docker Client 16
2.2.1 Docker命令的flag參數解析 17
2.2.2 處理flag信息並收集Docker Client的配置信息 20
2.2.3 如何創建Docker Client 22
2.3 Docker命令執行 24
2.3.1 Docker Client解析請求命令 24
2.3.2 Docker Client執行請求命令 25
2.4 總結 27
第3章 啟動Docker Daemon 28
3.1 引言 28
3.2 Docker Daemon的啟動流程 29
3.3 mainDaemon()的具體實現 30
3.3.1 配置初始化 30
3.3.2 flag參數檢查 32
3.3.3 創建engine對象 33
3.3.4 設定engine的信號捕獲 34
3.3.5 載入builtins 35
3.3.6 使用goroutine載入daemon
對象並運行 38
3.3.7 列印Docker版本及驅動信息 41
3.3.8 serveapi的創建與運行 42
3.4 總結 42
第4章 Docker Daemon之NewDaemon實現 43
4.1 引言 43
4.2 NewDaemon具體實現 44
4.3 套用配置信息 45
4.3.1 配置Docker容器的MTU 45
4.3.2 檢測網橋配置信息 46
4.3.3 查驗容器間的通信配置 46
4.3.4 處理網路功能配置 47
4.3.5 處理PID檔案配置 47
4.4 檢測系統支持及用戶許可權 48
4.5 配置工作路徑 49
4.6 載入並配置graphdriver 49
4.6.1 創建graphdriver 49
4.6.2 驗證btrfs與SELinux的兼容性 51
4.6.3 創建容器倉庫目錄 51
4.6.4 遷移容器至aufs類型 51
4.6.5 創建鏡像graph 52
4.6.6 創建volumesdriver以及volumes graph 53
4.6.7 創建TagStore 53
4.7 配置Docker Daemon網路環境 54
4.7.1 創建Docker網路設備 55
4.7.2 啟用iptables功能 55
4.7.3 啟用系統數據包轉發功能 56
4.7.4 創建DOCKER鏈 56
4.7.5 註冊處理方法至Engine 57
4.8 創建graphdb並初始化 57
4.9 創建execdriver 58
4.10 創建daemon實例 59
4.11 檢測DNS配置 60
4.12 啟動時載入已有Docker容器 61
4.13 設定shutdown的處理方法 61
4.14 返回daemon對象實例 62
4.15 總結 62
第5章 Docker Server的創建 63
5.1 引言 63
5.2 Docker Server創建流程 63
5.2.1 創建名為“serveapi”的Job 64
5.2.2 配置Job環境變數 64
5.2.3 運行Job 65
5.3 ServeApi運行流程 65
5.4 ListenAndServe實現 68
5.4.1 創建router路由實例 69
5.4.2 創建listener監聽實例 74
5.4.3 創建http.Server 74
5.4.4 啟動API服務 75
5.5 總結 75
第6章 Docker Daemon網路 76
6.1 引言 76
6.2 Docker Daemon網路介紹 77
6.3 Docker Daemon網路配置接口 78
6.4 Docker Daemon網路初始化 79
6.4.1 啟動Docker Daemon傳遞flag參數 80
6.4.2 解析網路flag參數 80
6.4.3 預處理flag參數 80
6.4.4 確定Docker網路模式 81
6.5 創建Docker網橋 82
6.5.1 提取環境變數 83
6.5.2 確定Docker網橋設備名 83
6.5.3 查找bridgeIface網橋設備 83
6.5.4 bridgeIface已創建 84
6.5.5 bridgeIface未創建 85
6.5.6 獲取網橋設備的網路地址 88
6.5.7 配置Docker Daemon的iptables 88
6.5.8 配置網路設備間數據報轉發功能 88
6.5.9 註冊網路Handler 89
6.6 總結 89
第7章 Docker容器網路 90
7.1 引言 90
7.2 Docker容器網路模式 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配置容器網路模式 97
7.3.1 使用Docker Client 98
7.3.2 runconfig包解析 98
7.3.3 CmdRun執行 102
7.4 Docker Daemon創建容器網路流程 103
7.4.1 創建容器之網路配置 103
7.4.2 啟動容器之網路配置 105
7.5 execdriver網路執行流程 111
7.5.1 創建libcontainer的Config對象 112
7.5.2 調用libcontainer的namespaces啟動容器 116
7.6 libcontainer實現核心態網路配置 117
7.6.1 創建exec.Cmd 118
7.6.2 啟動exec.Cmd創建進程 119
7.6.3 為容器進程初始化網路環境 120
7.7 總結 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 總結 129
第9章 Docker鏡像下載 130
9.1 引言 130
9.2 Docker鏡像下載流程 131
9.3 Docker Client 131
9.3.1 解析鏡像參數 132
9.3.2 配置認證信息 136
9.3.3 傳送API請求 137
9.4 Docker Server 138
9.4.1 解析請求參數 138
9.4.2 創建並配置Job 139
9.4.3 觸發執行Job 139
9.5 Docker Daemon 140
9.5.1 解析Job參數 1409.5.2 創建session對象 141
9.5.3 執行鏡像下載 142
9.6 總結 147