前言 xi
第一部分 背景與基礎
第1章 何謂容器,為何需要它 3
1.1 容器與虛擬機的比較 4
1.2 Docker與容器 5
1.3 Docker的曆史 7
1.4 插件與基礎設施 8
1.5 64位Linux 9
第2章 安裝 10
2.1 在Linux上安裝 Docker 10
2.1.1 將SELinux置於寬容模式下運行 11
2.1.2 不使用sudo命令執行 Docker 11
2.2 在 Mac OS及Windows上安裝 Docker 12
2.3 快速確認 13
第3章 邁齣第一步 15
3.1 運行第一個鏡像 15
3.2 基本命令 16
3.3 通過Dockerfile創建鏡像 20
3.4 使用寄存服務 22
3.5 使用Redis官方鏡像 24
3.6 總結 27
第4章 Docker基本概念 28
4.1 Docker係統架構 28
4.1.1 底層技術 29
4.1.2 周邊技術 30
4.1.3 Docker托管 31
4.2 鏡像是如何生成的 32
4.2.1 構建環境的上下文 32
4.2.2 鏡像層 33
4.2.3 緩存 35
4.2.4 基礎鏡像 35
4.2.5 Dockerfile指令 37
4.3 使容器與世界相連 39
4.4 容器互聯 40
4.5 利用數據捲和數據容器管理數據 41
4.5.1 共享數據 43
4.5.2 數據容器 44
4.6 Docker常用命令 45
4.6.1 run命令 46
4.6.2 容器管理 48
4.6.3 Docker信息 50
4.6.4 容器信息 50
4.6.5 鏡像管理 52
4.6.6 使用寄存服務器 54
4.7 總結 55
第二部分 Docker與軟件生命周期
第5章 在開發中應用Docker 59
5.1 說聲“Hello World!” 59
5.2 通過Compose實現自動化 67
5.3 總結 69
第6章 創建一個簡單的Web應用 71
6.1 創建一個基本網頁 72
6.2 利用現有鏡像 73
6.3 實現緩存功能 78
6.4 微服務 81
6.5 總結 81
第7章 鏡像分發 82
7.1 鏡像及鏡像庫的命名方式 82
7.2 Docker Hub 83
7.3 自動構建 85
7.4 私有分發 86
7.4.1 運行自己的寄存服務 86
7.4.2 商業寄存服務 92
7.5 縮減鏡像大小 92
7.6 鏡像齣處 94
7.7 總結 94
第8章 Docker持續集成與測試 95
8.1 為identidock添加單元測試 95
8.2 創建Jenkins容器 100
8.3 推送鏡像 106
8.3.1 給鏡像正確的標簽 106
8.3.2 準生産及生産環境 108
8.3.3 鏡像數量激增的問題 108
8.3.4 使用Docker部署Jenkins slaves 109
8.4 備份Jenkins數據 109
8.5 持續集成的托管解決方案 109
8.6 測試與微服務 110
8.7 總結 111
第9章 部署容器 113
9.1 通過Docker Machine配置資源 114
9.2 使用代理 117
9.3 執行選項 122
9.3.1 shell腳本 122
9.3.2 使用進程管理器(或用systemd控製所有進程) 124
9.3.3 使用配置管理工具 127
9.4 主機配置 130
9.4.1 選擇操作係統 130
9.4.2 選擇存儲驅動程序 130
9.5 專門的托管方案 132
9.5.1 Triton 132
9.5.2 榖歌容器引擎 134
9.5.3 亞馬遜EC2容器服務 135
9.5.4 Giant Swarm 136
9.6 持久性數據和生産環境容器 138
9.7 分享秘密信息 139
9.7.1 在鏡像中保存秘密信息 139
9.7.2 通過環境變量傳遞密鑰 139
9.7.3 通過數據捲傳遞密鑰 140
9.7.4 使用鍵值存儲 140
9.8 網絡連接 141
9.9 生産環境的寄存服務 141
9.10 持續部署/交付 141
9.11 總結 142
第10章 日誌記錄和監控 143
10.1 日誌記錄 144
10.1.1 Docker默認的日誌記錄 144
10.1.2 日誌匯總 145
10.1.3 使用ELK 進行日誌記錄 146
10.1.4 通過syslog實現日誌管理 155
10.1.5 從文件抓取日誌 160
10.2 監控和警報 161
10.2.1 使用Docker工具進行監測 161
10.2.2 cAdvisor 162
10.2.3 集群解決方案 163
10.3 商用的監聽及日誌記錄解決方案 166
10.4 總結 166
第三部分 工具和技術
第11章 聯網和服務發現 169
11.1 大使容器 170
11.2 服務發現 173
11.2.1 etcd 173
11.2.2 SkyDNS 177
11.2.3 Consul 181
11.2.4 服務注冊 185
11.2.5 其他解決方案 186
11.3 聯網選項 187
11.3.1 網橋模式 187
11.3.2 主機模式 188
11.3.3 容器模式 188
11.3.4 未聯網模式 188
11.4 全新的Docker聯網功能 188
11.5 網絡解決方案 190
11.5.1 Overlay 191
11.5.2 Weave 193
11.5.3 Flannel 196
11.5.4 Calico項目 201
11.6 總結 205
第12章 編排、集群和管理 207
12.1 集群和編排工具 208
12.1.1 Swarm 208
12.1.2 fleet 214
12.1.3 Kubernetes 219
12.1.4 Mesos和Marathon 226
12.2 容器管理平颱 235
12.2.1 Rancher 236
12.2.2 Clocker 237
12.2.3 Tutum 238
12.3 總結 239
第13章 容器安全與限製容器 241
13.1 需要考慮的事項 242
13.2 縱深防禦 244
13.3 如何保護identidock 245
13.4 以主機隔離容器 246
13.5 進行更新 246
13.6 鏡像齣處 249
13.6.1 Docker摘要 250
13.6.2 Docker的內容信任機製 250
13.6.3 可復製及可信任的Dockerfile 254
13.7 安全建議 256
13.7.1 設置用戶 256
13.7.2 限製容器聯網 257
13.7.3 刪除setuid和setgid的二進製文件 258
13.7.4 限製內存使用 259
13.7.5 限製CPU 使用 260
13.7.6 限製重新啓動 261
13.7.7 限製文件係統 261
13.7.8 限製內核能力 262
13.7.9 應用資源限製 263
13.8 運行加固內核 264
13.9 Linux安全模塊 265
13.9.1 SELinux 265
13.9.2 AppArmor 268
13.10 審核 268
13.11 事件響應 269
13.12 未來特性 269
13.13 總結 270
作者簡介 271
關於封麵 271
· · · · · · (
收起)