相關主題
商品描述
Docker和容器化計算技術一直在不斷創新和發展。十多年前,本書首版面市,見證了 Docker技術的發展,為了讓讀者 深入地理解和掌握新的容器技術,第4版中補充了一些新特性(如 構建功能),同時也摒棄了一些過時的工具和項目(如Docker Machine項目)。 全書分為四部分: 部分簡要介紹 Docker 的基礎知識和常用命令;第二部分詳述在各種典型場景中如何運用容器技術,包括操作系統、Web服務、數據庫、分布式處理和大數據、編程開發以及容器雲等;第三部分深入講解 容器技巧,包括實現原理、私有倉庫、安全防護、 網絡功能和網絡插件;第四部分展示與容器相關的開源項目,包括Etcd、Compose、Swarm、Kubernetes等。這些項目讓使用容器技術變得 加有效率,使容器平臺 加穩定和智能,共同構建了一個繁榮的容器化計算生態。
作者簡介
楊保華 博士,信息科技行業 專家。興趣方向包括分布式系統、人工智能和軟件架構等,是容器、網絡虛擬化、區塊鏈等技術的早期研究和推動者。他倡導技術創新與產品、市場相結合,曾負責多個大型計算平臺產品的架構和設計,以及企業系統的實現和實施。他熱愛開源文化,曾積極貢獻多個開源項目。
戴王劍 計算機專家。十多年來一直從事系統平臺、計算機網絡、服務器架構設計,負責過多個省級項目的架構設計。
曹亞侖 雲原生SRE,十年來一直從事雲平臺運維穩定性工作,負責過多個重大項目的運維體系建設。現為某雲廠商專有雲運維專家組成員,歷任存儲產品線DevOps工程師、雲技術經理(TAM)、故障應急值班長。2014年開始從事Docker相關技術研究,並在管控容器化及混合雲DevOps項目中進行大量實踐。此外,在企業級雲原生運維、混合雲運維穩定性體系建設及故障應急處置方面有豐富的經驗
目錄大綱
前言
第一部分 基礎入門
第1章 初識Docker與容器 3
1.1 什麼是Docker 3
1.2 為什麼使用Docker 5
1.3 Docker與虛擬化 7
1.4 本章小結 8
第2章 核心概念與安裝配置 9
2.1 核心概念 9
2.2 安裝Docker引擎 11
2.2.1 Docker引擎版本 11
2.2.2 在Linux環境下安裝Docker
引擎 12
2.3 安裝Docker桌面版 13
2.3.1 在macOS環境下安裝Docker
桌面版 14
2.3.2 在Windows環境下安裝
Docker桌面版 16
2.4 配置Docker服務 17
2.5 推薦實踐環境 18
2.6 本章小結 18
第3章 使用Docker鏡像 19
3.1 獲取鏡像 19
3.2 查看鏡像信息 21
3.3 搜尋鏡像 24
3.4 刪除和清理鏡像 24
3.5 創建鏡像 26
3.6 導出和載入鏡像 28
3.7 上傳鏡像 29
3.8 本章小結 29
第4章 操作Docker容器 30
4.1 創建容器 30
4.1.1 新建容器 30
4.1.2 啟動容器 34
4.1.3 新建並啟動容器 34
4.1.4 守護態運行 35
4.1.5 查看容器輸出 36
4.2 停止容器 36
4.3 進入容器 37
4.4 刪除容器 39
4.5 導入和導出容器 39
4.6 查看容器 41
4.7 其他容器命令 42
4.8 本章小結 43
第5章 訪問Docker倉庫 45
5.1 Docker Hub公共鏡像市場 45
5.2 搭建本地私有倉庫 49
5.3 本章小結 51
第6章 Docker數據管理 52
6.1 數據卷 52
6.2 數據卷容器 54
6.3 利用數據卷容器遷移數據 55
6.4 本章小結 56
第7章 端口映射與容器互聯 57
7.1 通過端口映射實現容器訪問 57
7.2 通過互聯機制實現便捷互訪 58
7.3 本章小結 61
第8章 使用Dockerfile創建鏡像 62
8.1 基本結構 62
8.2 指令說明 65
8.2.1 基本格式 65
8.2.2 解析器指令 66
8.2.3 環境變量替換 68
8.2.4 .dockerignore文件 69
8.2.5 FROM 70
8.2.6 RUN 71
8.2.7 RUN --mount 71
8.2.8 RUN --network 74
8.2.9 CMD 75
8.2.10 LABEL 76
8.2.11 EXPOSE 76
8.2.12 ENV 77
8.2.13 ADD 78
8.2.14 COPY 81
8.2.15 COPY/ADD --link 82
8.2.16 ENTRYPOINT 83
8.2.17 VOLUME 87
8.2.18 關於指定卷的註意事項 88
8.2.19 USER 88
8.2.20 WORKDIR 89
8.2.21 ARG 89
8.2.22 ONBUILD 93
8.2.23 STOPSIGNAL停止
信號 94
8.2.24 HEALTHCHECK 94
8.2.25 SHELL 95
8.3 創建鏡像 97
8.3.1 命令選項 97
8.3.2 選擇父鏡像 98
8.3.3 使用.dockerignore文件 99
8.3.4 多步驟創建 99
8.4 最佳實踐 100
8.5 本章小結 101
第9章 高級鏡像構建 102
9.1 使用構建器 102
9.1.1 創建構建器 103
9.1.2 列出構建器 103
9.1.3 使用Remote遠程構建套件
驅動 104
9.1.4 構建器磁盤清理 106
9.2 多步驟構建 107
9.2.1 單步驟構建的問題 107
9.2.2 使用多步驟構建 107
9.3 多平臺鏡像 109
9.4 使用GitHub Action 111
9.5 本章小結 116
第二部分 實戰案例
第10章 操作系統 119
10.1 BusyBox 119
10.2 Alpine 120
10.3 Ubuntu 121
10.4 本章小結 123
第11章 Web服務與應用 124
11.1 Apache 124
11.2 Nginx 129
11.3 Tomcat 134
11.4 Jetty 135
11.5 LAMP 136
11.6 CMS 139
11.6.1 WordPress 139
11.6.2 Ghost 140
11.7 本章小結 141
第12章 數據庫應用 142
12.1 MySQL 142
12.2 MongoDB 145
12.3 Redis 152
12.4 Memcached 154
12.5 本章小結 157
第13章 分布式處理與大數據
平臺 158
13.1 RabbitMQ 158
13.2 Hadoop 161
13.3 Spark 164
13.4 Storm 166
13.5 Elasticsearch 169
13.6 本章小結 172
第14章 編程開發 173
14.1 C/C++ 173
14.1.1 GCC 173
14.1.2 LLVM 176
14.1.3 Clang 176
14.2 Java 178
14.2.1 Spring Boot 179
14.2.2 相關資源 182
14.3 Python 182
14.3.1 使用PyPy 184
14.3.2 使用Django 184
14.3.3 使用Flask 192
14.3.4 使用Sentry 195
14.3.5 相關資源 197
14.4 JavaScript 197
14.4.1 使用Node.js 197
14.4.2 相關資源 201
14.5 Go 201
14.5.1 Beego 204
14.5.2 Gogs:基於Go的Git
服務 208
14.5.3 相關資源 209
14.6 PHP 209
14.6.1 PHP常用框架 214
14.6.2 相關資源 216
14.7 Rust 216
14.8 本章小結 219
第15章 容器與雲服務 220
15.1 雲服務簡介 220
15.2 AWS 221
15.3 谷歌雲服務 223
15.4 Azure 雲服務 226
15.5 阿裏雲容器服務 228
15.5.1 產品架構 231
15.5.2 應用場景 231
15.6 騰訊雲容器服務 235
15.6.1 產品架構 237
15.6.2 應用場景 237
15.7 本章小結 240
第16章 容器實戰思考 241
16.1 Docker為什麼會成功 241
16.2 研發人員該如何看待容器 242
16.3 容器化開發模式 243
16.4 本章小結 247
第三部分 進階技能
第17章 核心實現技術 251
17.1 基本架構 251
17.2 命名空間 253
17.3 控制組 257
17.4 聯合文件系統 260
17.5 Linux網絡虛擬化 262
17.6 本章小結 264
第18章 配置私有倉庫 265
18.1 安裝Docker Registry 265
18.2 配置TLS證書 267
18.3 管理訪問權限 268
18.4 配置Registry 272
18.5 批量管理鏡像 278
18.6 使用通知系統 280
18.7 使用Harbor搭建私有鏡像倉庫 283
18.8 本章小結 287
第19章 安全防護與配置 289
19.1 命名空間隔離的安全 290
19.2 控制組資源控制的安全 291
19.3 內核能力機制 291
19.4 Docker服務端的防護 292
19.5 更多安全特性的使用 293
19.6 使用第三方檢測工具 294
19.7 本章小結 296
第20章 高級網絡功能 297
20.1 啟動與配置參數 297
20.2 配置容器DNS和主機名 299
20.3 容器訪問控制 301
20.4 映射容器端口到宿主機的
實現 304
20.5 配置容器網橋 305
20.6 自定義網橋 306
20.7 使用OpenvSwitch網橋 307
20.8 創建一個點到點連接 309
20.9 本章小結 310
第21章 libnetwork插件化網絡
功能 311
21.1 容器網絡模型 311
21.2 Docker網絡命令 312
21.3 構建跨主機容器網絡 315
21.4 本章小結 318
第四部分 開源項目
第22章 Etcd——高可用的鍵值
數據庫 321
22.1 安裝和使用Etcd 322
22.1.1 二進制文件方式 322
22.1.2 Docker鏡像方式下載 324
22.1.3 數據目錄 324
22.1.4 服務啟動參數 325
22.2 使用客戶端命令 327
22.2.1 數據類操作 329
22.2.2 非數據類操作 330
22.3 Etcd集群管理 333
22.3.1 構建集群 333
22.3.2 集群配置優化 336
22.4 本章小結 338
第23章 Docker Compose——多容器
應用管理 339
23.1 安裝與卸載 340
23.2 Compose模板文件 342
23.3 Compose命令說明 356
23.3.1 命令對象與格式 356
23.3.2 命令選項 356
23.3.3 命令使用說明 357
23.4 Compose環境變量 363
23.4.1 Compose中定義的環境
變量 363
23.4.2 在Compose文件中使用
環境變量 363
23.4.3 Compose應用案例一:
Web負載均衡 364
23.4.4 Compose應用案例二:
大數據Spark集群 369
23.5 本章小結 373
第24章 Docker Swarm模式——跨主
機容器集群管理 374
24.1 Swarm模式簡介 374
24.2 基本概念 375
24.3 使用服務命令 381
24.4 本章小結 384
第25章 Kubernetes——生產級容器
集群平臺 385
25.1 主要版本歷史 386
25.2 核心概念 388
25.2.1 操作資源 388
25.2.2 控制器 389
25.2.3 輔助概念 390
25.3 資源抽象對象 390
25.3.1 容器組 391
25.3.2 服務 392
25.3.3 存儲卷 393
25.3.4 控制器 394
25.3.5 其他抽象對象 396
25.4 快速體驗 398
25.4.1 下載minikube和
kubectl 398
25.4.2 啟動集群 398
25.4.3 查看Kubernetes服務 399
25.4.4 使用部署控制器管理
服務 399
25.5 重要組件 401
25.6 使用kubectl 406
25.6.1 獲取kubectl 406
25.6.2 命令格式 407
25.6.3 全局參數 408
25.6.4 通用子命令 409
25.6.5 部署命令 414
25.6.6 集群管理命令 415
25.6.7 診斷命令 417
25.6.8 高級命令 420
25.6.9 配置命令 421
25.6.10 其他命令 422
25.7 網絡設計 423
25.7.1 場景分析 423
25.7.2 直接路由 424
25.7.3 Overlay網絡 424
25.8 本章小結 425
第26章 其他相關項目 426
26.1 持續集成 426
26.2 容器管理 432
26.3 編程開發 435
26.3.1 安裝docker-py 435
26.3.2 使用示例 435
26.4 網絡支持 436
26.4.1 pipework 436
26.4.2 Flannel項目 436
26.4.3 Weave Net項目 437
26.4.4 Calico 項目 438
26.5 日誌處理 439
26.5.1 Fluentd 439
26.5.2 logspout 439
26.6 服務代理 440
26.6.1 Traefik 440
26.6.2 nginx-proxy 442
26.7 標準與規範 443
26.7.1 runC標準 443
26.7.2 開放容器規範 443
26.7.3 雲應用十二要素 444
26.8 其他項目 445
26.8.1 OpenStack支持 445
26.8.2 dockerize 446
26.8.3 Unikernel 448
26.9 本章小結 448
附錄
附錄A 常見問題總結 450
A.1 鏡像相關 450
A.2 容器相關 452
A.3 倉庫相關 453
A.4 配置相關 453
A.5 Docker與虛擬化 455
A.6 其他 455
附錄B 熱門鏡像介紹 457
B.1 MongoDB 457
B.2 MySQL 460
B.3 Nginx 463
B.4 Node.js 466
B.5 Redis 468
B.6 Ubuntu 471
B.7 WordPress 472
附錄C Docker命令查詢 476
C.1 基本語法 476
C.2 客戶端命令 476
C.3 服務端命令選項 479
C.4 一張圖總結Docker命令 482
附錄D 資源鏈接 483
