序
前 言
第1章 Docker簡介 1
1.1 引言 1
1.1.1 Docker的曆史和發展 1
1.1.2 Docker的架構介紹 2
1.2 功能和組件 3
1.2.1 Docker客戶端 3
1.2.2 Docker daemon 3
1.2.3 Docker容器 3
1.2.4 Docker鏡像 4
1.2.5 Registry 4
1.3 安裝和使用 5
1.3.1 Docker的安裝 5
1.3.2 Docker的使用 6
1.4 概念澄清 8
1.4.1 Docker在LXC基礎上做瞭什麼工作 8
1.4.2 Docker容器和虛擬機之間有什麼不同 9
1.5 本章小結 10
第2章 關於容器技術 11
2.1 容器技術的前世今生 11
2.1.1 關於容器技術 11
2.1.2 容器技術的曆史 12
2.2 一分鍾理解容器 14
2.2.1 容器的組成 14
2.2.2 容器的創建原理 15
2.3 Cgroup介紹 16
2.3.1 Cgroup是什麼 16
2.3.2 Cgroup的接口和使用 17
2.3.3 Cgroup子係統介紹 18
2.4 Namespace介紹 20
2.4.1 Namespace是什麼 20
2.4.2 Namespace的接口和使用 21
2.4.3 各個Namespace介紹 22
2.5 容器造就Docker 26
2.6 本章小結 27
第3章 理解Docker鏡像 28
3.1 Docker image概念介紹 28
3.2 使用Docker image 29
3.2.1 列齣本機的鏡像 29
3.2.2 Build:創建一個鏡像 31
3.2.3 Ship:傳輸一個鏡像 32
3.2.4 Run:以image為模闆啓動一個容器 32
3.3 Docker image的組織結構 33
3.3.1 數據的內容 33
3.3.2 數據的組織 35
3.4 Docker image擴展知識 37
3.4.1 聯閤掛載 37
3.4.2 寫時復製 37
3.4.3 Git式管理 40
3.5 本章小結 40
第4章 倉庫進階 41
4.1 什麼是倉庫 41
4.1.1 倉庫的組成 41
4.1.2 倉庫鏡像 42
4.2 再看Docker Hub 43
4.2.1 Docker Hub的優點 43
4.2.2 網頁分布 44
4.2.3 賬戶管理係統 46
4.3 倉庫服務 49
4.3.1 Registry功能和架構 49
4.3.2 Registry API 50
4.3.3 Registry API傳輸過程分析 53
4.3.4 鑒權機製 57
4.4 部署私有倉庫 61
4.4.1 運行私有服務 61
4.4.2 構建反嚮代理 61
4.5 Index及倉庫高級功能 64
4.5.1 Index的作用和組成 64
4.5.2 控製單元 65
4.5.3 鑒權模塊 66
4.5.4 數據庫 67
4.5.5 高級功能 68
4.5.6 Index客戶端界麵 69
4.6 本章小結 69
第5章 Docker網絡 71
5.1 Docker網絡現狀 71
5.2 基本網絡配置 73
5.2.1 Docker網絡初探 73
5.2.2 Docker網絡相關參數 80
5.3 高級網絡配置 85
5.3.1 容器跨主機多子網方案 85
5.3.2 容器跨主機多子網配置方法 86
5.4 網絡解決方案進階 90
5.4.1 Weave 90
5.4.2 Flannel 91
5.4.3 SocketPlane 94
5.5 本章小結 98
第6章 容器捲管理 99
6.1 Docker捲管理基礎 99
6.1.1 增加新數據捲 99
6.1.2 將主機目錄掛載為數據捲 100
6.1.3 創建數據捲容器 100
6.1.4 數據捲的備份、轉儲和遷移 101
6.1.5 Docker捲管理的問題 101
6.2 使用捲插件 102
6.2.1 捲插件簡介 102
6.2.2 捲插件的使用 102
6.3 捲插件剖析 103
6.3.1 捲插件工作原理 104
6.3.2 捲插件API接口 105
6.3.3 插件發現機製 105
6.4 已有的捲插件 106
6.5 本章小結 107
第7章 Docker API 108
7.1 關於 Docker API 108
7.1.1 REST 簡介 108
7.1.2 Docker API 初探 109
7.1.3 Docker API 種類 110
7.2 RESTful API應用示例 110
7.2.1 前期準備 111
7.2.2 Docker API的基本示例 116
7.3 API的高級應用 123
7.3.1 場景概述 123
7.3.2 場景實現 124
7.4 本章小結 131
第8章 Docker安全 132
8.1 深入理解Docker的安全 132
8.1.1 Docker的安全性 132
8.1.2 Docker容器的安全性 132
8.2 安全策略 133
8.2.1 Cgroup 133
8.2.2 ulimit 135
8.2.3 容器組網 135
8.2.4 容器+全虛擬化 136
8.2.5 鏡像簽名 136
8.2.6 日誌審計 136
8.2.7 監控 137
8.2.8 文件係統級防護 137
8.2.9 capability 137
8.2.10 SELinux 138
8.2.11 AppArmor 142
8.2.12 Seccomp 144
8.2.13 grsecurity 145
8.2.14 幾個與Docker安全相關的項目 146
8.3 安全加固 146
8.3.1 主機逃逸 147
8.3.2 安全加固之capability 150
8.3.3 安全加固之SELinux 151
8.3.4 安全加固之AppArmor 152
8.4 Docker安全遺留問題 153
8.4.1 User Namespace 153
8.4.2 非root運行Docker daemon 153
8.4.3 Docker熱升級 153
8.4.4 磁盤限額 154
8.4.5 網絡I/O 154
8.5 本章小結 154
第9章 Libcontainer簡介 155
9.1 引擎的引擎 155
9.1.1 關於容器的引擎 155
9.1.2 對引擎的理解 156
9.2 Libcontainer的技術原理 157
9.2.1 為容器創建新的命名空間 158
9.2.2 為容器創建新的Cgroup 159
9.2.3 創建一個新的容器 160
9.2.4 Libcontainer的功能 164
9.3 關於runC 166
9.3.1 runC和Libcontainer的關係 166
9.3.2 runC的工作原理 167
9.3.3 runC的未來 168
9.4 本章小結 169
第10章 Docker實戰 170
10.1 Dockerfile簡介 170
10.1.1 一個簡單的例子 171
10.1.2 Dockerfile指令 171
10.1.3 再談Docker鏡像製作 173
10.2 基於Docker的Web應用和發布 174
10.2.1 選擇基礎鏡像 174
10.2.2 製作HTTPS服務器鏡像 175
10.2.3 將Web源碼導入Tomcat鏡像中 178
10.2.4 部署與驗證 179
10.3 為Web站點添加後颱服務 180
10.3.1 代碼組織結構 180
10.3.2 組件鏡像製作過程 183
10.3.3 整體部署服務 183
10.4 本章小結 184
第11章 Docker集群管理 185
11.1 Compose 185
11.1.1 Compose概述 185
11.1.2 Compose配置簡介 186
11.2 Machine 187
11.2.1 Machine概述 187
11.2.2 Machine的基本概念及運行流程 188
11.3 Swarm 188
11.3.1 Swarm概述 188
11.3.2 Swarm內部架構 189
11. 4 Docker在OpenStack上的集群實戰 190
11.5 本章小結 196
第12章 Docker生態圈 197
12.1 Docker生態圈介紹 197
12.2 重點項目介紹 198
12.2.1 編排 198
12.2.2 容器操作係統 203
12.2.3 PaaS平颱 206
12.3 生態圈的未來發展 208
12.3.1 Docker公司的發展和完善方嚮 208
12.3.2 OCI組織 209
12.3.3 生態圈格局的分化和發展 210
12.4 本章小章 211
第13章 Docker測試 212
13.1 Docker自身測試 212
13.1.1 Docker自身的測試框架 212
13.1.2 運行Docker測試 213
13.1.3 在容器中手動運行測試用例 215
13.1.4 運行集成測試中單個或多個測試用例 215
13.1.5 Docker測試用例集介紹 216
13.1.6 Docker測試需要改進的方麵 217
13.1.7 構建和測試文檔 217
13.1.8 其他Docker測試套 218
13.2 Docker技術在測試中的應用 220
13.2.1 Docker對測試的革命性影響 221
13.2.2 Docker技術適用範圍 222
13.2.3 Jenkins+Docker自動化環境配置 223
13.3 本章小結 229
第14章 參與Docker開發 230
14.1 改進Docker 230
14.1.1 報告問題 230
14.1.2 提交補丁 231
14.2 編譯自己的Docker 235
14.2.1 使用make工具編譯 235
14.2.2 手動啓動容器編譯 235
14.2.3 編譯動態鏈接的可執行文件 237
14.2.4 跑測試用例及小結 237
14.3 開源的溝通和交流 238
14.3.1 Docker溝通和交流的途徑 238
14.3.2 開源溝通和交流的建議 238
14.4 Docker項目的組織架構 239
14.4.1 管理模型 239
14.4.2 組織架構 240
14.5 本章小章 242
附錄A FAQ 243
附錄B 常用Dockerfile 247
附錄C Docker信息獲取渠道 250
· · · · · · (
收起)