第1篇 啓 程
第1章 鳥瞰容器生態係統 3
1.1 容器生態係統 3
1.2 本教程覆蓋的知識範圍 10
1.3 準備實驗環境 10
1.3.1 環境選擇 10
1.3.2 安裝 Docker 10
1.4 運行第1個容器 11
1.5 小結 12
第二篇 容器技術
第2章 容器核心知識概述 15
2.1 What —— 什麼是容器 15
2.2 Why —— 為什麼需要容器 16
2.2.1 容器解決的問題 16
2.2.2 Docker 的特性 20
2.2.3 容器的優勢 20
2.3 How —— 容器是如何工作的 21
2.4 小結 24
第3章 Docker 鏡像 26
3.1 鏡像的內部結構 26
3.1.1 hello-world —— 最小的鏡像 26
3.1.2 base 鏡像 27
3.1.3 鏡像的分層結構 30
3.2 構建鏡像 32
3.2.1 docker commit 32
3.2.2 Dockerfile 34
3.3 RUN vs CMD vs ENTRYPOINT 42
3.3.1 Shell 和 Exec 格式 42
3.3.2 RUN 44
3.3.3 CMD 44
3.3.4 ENTRYPOINT 45
3.3.5 最 佳實踐 46
3.4 分發鏡像 46
3.4.1 為鏡像命名 46
3.4.2 使用公共 Registry 49
3.4.3 搭建本地 Registry 51
3.5 小結 52
第4章 Docker 容器 55
4.1 運行容器 55
4.1.1 讓容器長期運行 56
4.1.2 兩種進入容器的方法 57
4.1.3 運行容器的最 佳實踐 59
4.1.4 容器運行小結 59
4.2 stop/start/restart 容器 60
4.3 pause / unpause 容器 61
4.4 刪除容器 61
4.5 State Machine 62
4.6 資源限製 65
4.6.1 內存限額 65
4.6.2 CPU 限額 66
4.6.3 Block IO 帶寬限額 68
4.7 實現容器的底層技術 69
4.7.1 cgroup 70
4.7.2 namespace 70
4.8 小結 72
第5章 Docker 網絡 74
5.1 none 網絡 74
5.2 host 網絡 75
5.3 bridge 網絡 76
5.4 user-defined 網絡 78
5.5 容器間通信 84
5.5.1 IP通信 84
5.5.2 Docker DNS Server 85
5.5.3 joined 容器 85
5.6 將容器與外部世界連接 87
5.6.1 容器訪問外部世界 87
5.6.2 外部世界訪問容器 90
5.7 小結 91
第6章 Docker 存儲 92
6.1 storage driver 92
6.2 Data Volume 94
6.2.1 bind mount 94
6.2.2 docker managed volume 96
6.3 數據共享 99
6.3.1 容器與 host 共享數據 99
6.3.2 容器之間共享數據 99
6.4 volume container 100
6.5 data-packed volume container 102
6.6 Data Volume 生命周期管理 103
6.6.1 備份 104
6.6.2 恢復 104
6.6.3 遷移 104
6.6.4 銷毀 104
6.7 小結 105
第三篇 容器進階知識
第7章 多主機管理 109
7.1 實驗環境描述 110
7.2 安裝 Docker Machine 111
7.3 創建 Machine 112
7.4 管理Machine 114
第8章 容器網絡 117
8.1 libnetwork & CNM 117
8.2 overlay 119
8.2.1 實驗環境描述 120
8.2.2 創建overlay網絡 121
8.2.3 在overlay中運行容器 122
8.2.4 overlay 網絡連通性 124
8.2.5 overlay 網絡隔離 126
8.2.6 overlay IPAM 127
8.3 macvlan 127
8.3.1 準備實驗環境 127
8.3.2 創建 macvlan 網絡 128
8.3.3 macvlan 網絡結構分析 130
8.3.4 用 sub-interface 實現多 macvlan 網絡 131
8.3.5 macvlan 網絡間的隔離和連通 132
8.4 flannel 136
8.4.1 實驗環境描述 137
8.4.2 安裝配置 etcd 137
8.4.3 build flannel 138
8.4.4 將 flannel 網絡的配置信息保存到 etcd 139
8.4.5 啓動 flannel 139
8.4.6 配置 Docker 連接 flannel 141
8.4.7 將容器連接到 flannel 網絡 143
8.4.8 flannel 網絡連通性 144
8.4.9 flannel 網絡隔離 146
8.4.10 flannel 與外網連通性 146
8.4.11 host-gw backend 146
8.5 weave 148
8.5.1 實驗環境描述 148
8.5.2 安裝部署 weave 149
8.5.3 在host1中啓動weave 149
8.5.4 在 host1 中啓動容器 150
8.5.5 在host2中啓動weave並運行容器 153
8.5.6 weave 網絡連通性 154
8.5.7 weave 網絡隔離 155
8.5.8 weave 與外網的連通性 156
8.5.9 IPAM 158
8.6 calico 158
8.6.1 實驗環境描述 159
8.6.2 啓動 etcd 159
8.6.3 部署 calico 160
8.6.4 創建calico網絡 161
8.6.5 在 calico 中運行容器 161
8.6.6 calico 默認連通性 164
8.6.7 calico policy 167
8.6.8 calico IPAM 169
8.7 比較各種網絡方案 170
8.7.1 網絡模型 171
8.7.2 Distributed Store 171
8.7.3 IPAM 171
8.7.4 連通與隔離 172
8.7.5 性能 172
第9章 容器監控 173
9.1 Docker自帶的監控子命令 173
9.1.1 ps 173
9.1.2 ...74
9.1.3 stats 175
9.2 sysdig 175
9.3 Weave Scope 179
9.3.1 安裝 179
9.3.2 容器監控 181
9.3.3 監控 host 184
9.3.4 多主機監控 186
9.4 cAdvisor 189
9.4.1 監控 Docker Host 189
9.4.2 監控容器 191
9.5 Prometheus 194
9.5.1 架構 194
9.5.2 多維數據模型 195
9.5.3 實踐 196
9.6 比較不同的監控工具 204
9.7 幾點建議 205
第10章 日誌管理 207
10.1 Docker logs 207
10.2 Docker logging driver 209
10.3 ELK 211
10.3.1 日誌處理流程 211
10.3.2 安裝 ELK 套件 212
10.3.3 Filebeat 214
10.3.4 管理日誌 216
10.4 Fluentd 220
10.4.1 安裝 Fluentd 221
10.4.2 重新配置 Filebeat 221
10.4.3 監控容器日誌 221
10.5 Graylog 222
10.5.1 Graylog 架構 222
10.5.2 部署 Graylog 223
10.5.3 配置 Graylog 225
10.5.4 監控容器日誌 227
10.6 小結 229
第11章 數據管理 230
11.1 從一個例子開始 230
11.2 實踐 Rex-Ray driver 232
11.2.1 安裝 Rex-Ray 232
11.2.2 配置 VirtualBox 234
11.2.3 創建Rex-Ray volume 236
11.2.4 使用 Rex-Ray volume 237
寫在最後 243
· · · · · · (
收起)