第1章 利用Docker容器持續(xù)集成 1
1.1 完全Docker化的手動持續(xù)集成流程 3
1.2 運(yùn)行單元測試并構(gòu)建服務(wù)的二進(jìn)制文件 5
1.3 構(gòu)建服務(wù)鏡像 7
1.4 運(yùn)行模擬測試 10
1.5 推送鏡像到鏡像庫 12
第2章 搭建并運(yùn)行Swarm集群 17
2.1 可擴(kuò)展性 18
2.2 軸向擴(kuò)展 19
X軸擴(kuò)展 20
Y軸擴(kuò)展 21
Z軸擴(kuò)展 22
2.3 集群 22
2.4 Docker Swarm模式 23
2.5 搭建一個Swarm集群 25
2.6 在Swarm集群上部署服務(wù) 28
2.7 擴(kuò)展服務(wù) 30
2.8 故障轉(zhuǎn)移 31
2.9 現(xiàn)在怎么辦 32
第3章 Docker Swarm網(wǎng)絡(luò)和反向代理 33
3.1 搭建一個集群 34
3.2 以高可用性運(yùn)行安全的和容錯的服務(wù)需求 35
3.3 隔離數(shù)據(jù)庫的運(yùn)行 37
3.4 通過反向代理運(yùn)行服務(wù) 41
3.5 創(chuàng)建一個反向代理服務(wù)負(fù)責(zé)根據(jù)基URL路由請求 42
3.6 對一個服務(wù)的所有實(shí)例實(shí)施負(fù)載均衡的請求 47
3.7 現(xiàn)在怎么辦 50
第4章 Swarm集群內(nèi)的服務(wù)發(fā)現(xiàn) 51
4.1 沒有注冊中心Docker Swarm會怎樣 51
4.2 獨(dú)立的Docker Swarm加上服務(wù)發(fā)現(xiàn)會是什么樣的 55
4.3 Swarm集群中的服務(wù)發(fā)現(xiàn) 56
4.4 我們需要服務(wù)發(fā)現(xiàn)嗎 57
4.5 將Consul設(shè)置為Swarm集群內(nèi)的服務(wù)注冊中心 58
4.6 縮放有狀態(tài)實(shí)例時出現(xiàn)的問題 63
4.7 使用服務(wù)注冊中心來存儲狀態(tài) 64
4.8 發(fā)現(xiàn)組成服務(wù)的所有實(shí)例的地址 69
4.9 使用服務(wù)注冊中心或鍵值存儲來存儲服務(wù)狀態(tài) 71
4.10 現(xiàn)在怎么辦 74
第5章 使用Docker容器進(jìn)行持續(xù)交付和部署 75
5.1 定義持續(xù)交付環(huán)境 76
5.2 搭建持續(xù)交付集群 77
5.3 使用節(jié)點(diǎn)標(biāo)簽來約束服務(wù) 80
5.4 創(chuàng)建服務(wù) 83
5.5 示范持續(xù)交付步驟 85
5.6 從持續(xù)交付到持續(xù)部署走得更遠(yuǎn) 90
5.7 現(xiàn)在怎么辦 91
第6章 使用Jenkins自動化持續(xù)部署流程 93
6.1 Jenkins架構(gòu) 93
6.2 搭建生產(chǎn)環(huán)境 94
6.3 Jenkins服務(wù) 95
6.4 Jenkins故障轉(zhuǎn)移 99
6.5 Jenkins代理 100
6.6 在生產(chǎn)和類生產(chǎn)環(huán)境中創(chuàng)建服務(wù) 108
6.7 使用Jenkins自動化持續(xù)部署流程 110
6.8 創(chuàng)建Jenkins流水線作業(yè) 111
6.9 定義流水線節(jié)點(diǎn) 113
6.10 定義流水線階段 115
6.11 定義流水線步驟 116
6.12 現(xiàn)在怎么辦 121
第7章 探索Docker遠(yuǎn)程API 123
7.1 搭建環(huán)境 124
7.2 通過Docker Remote API操作Docker Swarm 125
7.3 使用Docker Remote API自動配置代理 134
7.4 將Swarm Listener與代理相結(jié)合 135
7.5 自動重新配置代理 136
7.6 從代理中刪除服務(wù) 138
7.7 現(xiàn)在怎么辦 138
第8章 使用Docker Stack和Compose YAML文件來
部署Swarm Services 141
8.1 搭建Swarm集群 142
8.2 通過Docker Stack命令創(chuàng)建Swarm服務(wù) 142
8.3 部署更多stack 145
8.4 stack,用還是不用 147
8.5 清理 147
第9章 定義日志策略 149
9.1 集中日志的需求 151
9.2 將ElasticSearch設(shè)置為日志數(shù)據(jù)庫 153
9.3 將LogStash設(shè)置為日志解析器和轉(zhuǎn)發(fā)器 154
9.4 從Swarm集群內(nèi)任意位置運(yùn)行的所有容器轉(zhuǎn)發(fā)日志 157
9.5 探索日志 161
9.6 討論其他日志解決方案 166
9.7 現(xiàn)在怎么辦 167
第10章 收集指標(biāo)與監(jiān)控集群 169
10.1 集群監(jiān)控系統(tǒng)的需求 169
10.2 選擇正確的數(shù)據(jù)庫來存儲系統(tǒng)指標(biāo) 171
10.3 創(chuàng)建集群 173
10.4 Prometheus指標(biāo) 175
10.5 導(dǎo)出系統(tǒng)范圍的指標(biāo) 176
10.6 拉取、查詢和可視化Prometheus指標(biāo) 181
10.7 使用Grafana創(chuàng)建看板 188
10.8 在Grafana中探索Docker Swarm和容器概覽儀表板 195
10.9 通過儀表板指標(biāo)調(diào)整服務(wù) 201
10.10 監(jiān)控佳實(shí)踐 204
10.11 現(xiàn)在怎么辦 205
第11章 擁抱毀滅:寵物與牛 207
11.1 現(xiàn)在怎么辦 209
第12章 在Amazon Web Services中創(chuàng)建和管理Docker Swarm集群 211
12.1 安裝AWS CLI并設(shè)置環(huán)境變量 212
12.2 使用Docker Machine和AWS CLI來配置Swarm集群 215
12.3 使用Docker在AWS中建立Swarm集群 223
12.4 在AWS中使用Docker自動配置Swarm集群 232
12.5 使用Packer和Terraform來創(chuàng)建Swarm集群 236
12.6 使用Packer創(chuàng)建Amazon機(jī)器鏡像 236
12.7 在AWS中使用Terraform創(chuàng)建Swarm集群 241
12.8 在AWS中選擇正確的工具創(chuàng)建和管理Swarm集群 257
12.9 是使用還是不使用Docker Machine 257
12.10 是使用還是不使用Docker for AWS 258
12.11 是使用還是不使用Terraform 260
12.12 后的結(jié)論 263
第13章 在DigitalOcean中創(chuàng)建和管理Docker Swarm集群 265
13.1 設(shè)置環(huán)境變量 267
13.2 使用Docker Machine和DigitalOcean API創(chuàng)建Swarm集群 269