Docker實戰派——容器入門七步法

Docker實戰派——容器入門七步法

《Docker實戰派——容器入門七步法》是2022年4月電子工業出版社出版的圖書,作者是王嘉濤、李傳龍、盧桂周。

基本介紹

  • 中文名:Docker實戰派——容器入門七步法
  • 作者:王嘉濤 、李傳龍 、盧桂周
  • 出版時間:2022年4月
  • 出版社:電子工業出版社
  • 頁數:432 頁
  • ISBN:9787121431456
  • 定價:118 元
  • 開本:16 開
內容簡介,圖書目錄,作者簡介,

內容簡介

雲原生時代,套用變得越來越強大,與此同時,它的複雜度也在呈指數級上升。希望實現基礎設施和流程現代化,甚至企業文化現代化的企業的最終目標是仔細選擇最適合其具體情況的雲技術。在現代化的企業套用中,集群部署、隔離環境、灰度發布、服務格線及動態擴容/縮容缺一不可,而Docker 技術則是其中間的必要橋樑。 本書將圍繞Docker 技術展開介紹,通過“七步法”為讀者構建完善的學習體系。開篇先通過“蓋房子”的故事展開,讓讀者迅速了解Docker 是什麼、能做什麼。然後補充一些與Docker 技術相關的基礎知識,包含Linux、Shell、Nginx 及網路調試基礎,為讀者的後續學習掃除障礙。最後通過示例幫助讀者進行Docker 容器化體驗。“授人以魚,不如授人以漁”。本書通過剖析Docker 的核心原理、持續集成與發布及企業級套用案例,一步步為讀者打造“通向企業級套用”的階梯。 本書內容詳盡,由淺入深,案例豐富。

圖書目錄

第1章 快速了解Docker
1.1 Docker簡介 1
1.1.1 通過“蓋房子”來理解Docker—— 一次構建,處處運行 1
1.1.2 Docker的適用人群 3
1.1.3 Docker能解決什麼問題 4
1.1.4 如何快速入門 6
1.2 Docker的基本組成 7
1.2.1 Docker的三大組成部分 7
1.2.2 Docker的三大核心概念 8
1.3 入門必備基礎知識 10
1.3.1 Linux基本操作 10
1.3.2 Shell基礎命令 22
1.3.3 網路調試基礎 27
1.3.4 Nginx配置 34
1.3.5 區分物理機、虛擬機與容器 41
1.4 安裝Docker 44
1.4.1 在Windows中安裝 44
1.4.2 在macOS中安裝 47
1.4.3 在CentOS中安裝 49
1.4.4 在Ubuntu中安裝 50
1.4.5 配置鏡像加速 52
1.5 使用Docker桌面端工具 54
1.5.1 基本功能介紹 54
1.5.2 使用鏡像倉庫 61
1.6 Docker常用命令1——鏡像命令 65
1.6.1 Dockerfile配置示例 65
1.6.2 FROM命令 66
1.6.3 MAINTAINER命令 66
1.6.4 RUN命令 67
1.6.5 ADD命令和COPY命令 69
1.6.6 ENV命令 69
1.6.7 WORKDIR命令 70
1.6.8 EXPOSE命令 70
1.6.9 CMD命令和ENTRYPOINT命令 70
1.6.10 VOLUME命令 71
1.7 Docker常用命令2——容器命令 72
1.7.1 clone命令 72
1.7.2 build命令 73
1.7.3 run命令 73
1.7.4 share命令 75
1.7.5 push命令 76
1.8 本章小結 77
第2章 開始第一個Docker項目
2.1 項目開發的主要階段 78
2.1.1 一般項目開發的主要階段 78
2.1.2 Docker項目開發的主要階段 79
2.2 項目準備 80
2.2.1 準備相關環境 80
2.2.2 準備項目 81
2.3 對Web項目進行容器化改造 84
2.3.1 構建項目 84
2.3.2 配置Nginx檔案 85
2.3.3 創建和配置Dockerfile檔案 88
2.4 構建項目鏡像 89
2.4.1 準備啟動環境 89
2.4.2 構建鏡像 89
2.5 在容器中運行項目鏡像 91
2.5.1 運行容器 92
2.5.2 管理容器 92
2.5.3 在瀏覽器中打開 93
2.5.4 進程管理 93
2.5.5 日誌查看 96
2.6 管理鏡像 97
2.6.1 了解鏡像倉庫 97
2.6.2 最大的鏡像倉庫——Docker Hub 98
2.6.3 把項目鏡像推送到遠程鏡像倉庫中 98
2.7 發布項目 102
2.7.1 準備伺服器環境 102
2.7.2 部署項目 103
2.7.3 確定容器是否運行正常 103
2.7.4 線上驗證 105
2.8 本章小結 106
第3章 了解Docker的核心原理
3.1 熟悉Docker架構 107
3.2 Linux的Namespace機制 112
3.3 Linux底層的Cgroup隔離機制 117
3.4 容器的生命周期 120
3.4.1 容器的生命狀態 121
3.4.2 容器狀態之間的關係 121
3.4.3 終止進程的SIGKILL信號和SIGTERM信號 123
3.5 Docker的網路與通信 124
3.5.1 網路驅動程式 124
3.5.2 網橋網路 125
3.5.3 覆蓋網路 127
3.5.4 Macvlan網路 131
3.5.5 禁用Docker上的網路 133
3.6 Docker UnionFS的原理 135
3.6.1 UnionFS的概念 135
3.6.2 載入Docker鏡像的原理 135
3.7 Device Mapper存儲 138
3.7.1 鏡像分層和共享 138
3.7.2 在Docker中配置devicemapper 139
3.7.3 配置loop-lvm模式 140
3.7.4 配置direct-lvm模式 142
3.7.5 最佳實踐 146
3.8 Compose容器編排 146
3.8.1 安裝Docker Compose 147
3.8.2 基本使用 148
3.8.3 驗證服務是否正常 150
3.8.4 綁定目錄與更新套用 150
3.8.5 在後台啟動服務 151
3.8.6 部署分散式套用 151
3.9 Docker源碼分析 156
3.9.1 給初學者的建議 156
3.9.2 學習Docker源碼的思路 157
3.9.3 容器是如何被啟動的 158
3.9.4 Docker Client是如何訪問Docker Server的 165
3.9.5 Docker Engine是如何工作的 166
3.10 本章小結 169
第4章 趁熱打鐵Docker項目實戰
4.1 前端環境準備 170
4.1.1 Web伺服器——安裝Nginx 170
4.1.2 伺服器端環境——安裝Node.js 172
4.2 前端套用1——Web技術棧 174
4.2.1 Web框架1——React實戰 174
4.2.2 Web框架2——Vue.js實戰 176
4.2.3 Web框架3——其他 177
4.3 前端套用2——Node.js 180
4.3.1 客戶端渲染(CSR)實戰 180
4.3.2 伺服器端渲染(SSR)實戰 180
4.4 後端環境準備 182
4.4.1 註冊中心——ZooKeeper 182
4.4.2 訊息佇列框架——Kafka 185
4.4.3 微服務框架——Dubbo 188
4.4.4 資料庫1——安裝Redis 191
4.4.5 資料庫2——安裝MySQL 192
4.4.6 資料庫3——安裝MongoDB 193
4.5 後端容器1——Java技術棧 194
4.5.1 Java常用框架 194
4.5.2 Java微服務容器化實戰——Spring Boot 197
4.5.3 Java技術棧改造的常見問題 202
4.6 後端容器2——Go語言技術棧 204
4.6.1 Go語言常用框架 204
4.6.2 Web框架改造1——Gin實戰 205
4.6.3 Web框架改造2——Beego實戰 209
4.6.4 Go語言技術棧改造的常見問題 212
4.7 後端容器3——Python技術棧 213
4.7.1 Python常見框架 214
4.7.2 Web框架改造——Django實戰 215
4.7.3 微服務框架改造——Nameko實戰 220
4.7.4 Python技術棧改造的常見問題 223
4.8 Docker測試實戰 224
4.8.1 Docker自動化測試 225
4.8.2 使用Docker測試靜態網站 227
4.8.3 使用Docker進行UI自動化測試 230
4.9 本章小結 237
第5章 Docker的持續集成與發布
5.1 準備鏡像倉庫 238
5.1.1 倉庫選型 238
5.1.2 原生Docker倉庫 239
5.1.3 Harbor鏡像倉庫 240
5.2 初始化容器配置檔案 244
5.2.1 生成Dockerfile檔案 244
5.2.2 Dockerfile檔案配置的最佳實踐 245
5.3 通過Jenkins持續集成Docker 248
5.3.1 部署Jenkins 248
5.3.2 創建Jenkins流水線 250
5.3.3 持續集成Docker 252
5.3.4 前端快取最佳化 255
5.4 通過Jenkins發布Docker 257
5.4.1 使用Jenkins流水線部署容器 258
5.4.2 基於Jenkins Job的多步構建 260
5.5 部署Docker容器監控 262
5.5.1 容器監控的原理 262
5.5.2 cAdvisor的部署與套用 263
5.6 本章小結 265
第6章 Docker的高級套用
6.1 Docker的容器與進程 266
6.1.1 容器是臨時的 266
6.1.2 進程的概念 267
6.1.3 容器與進程 269
6.2 Docker的檔案存儲與備份 273
6.2.1 數據檔案的存儲 273
6.2.2 卷存儲 274
6.2.3 綁定掛載 276
6.2.4 tmpfs掛載 277
6.2.5 數據檔案的備份 277
6.3 Docker的網路配置 278
6.3.1 Flannel網路 279
6.3.2 Weave網路 280
6.3.3 Open vSwitch 281
6.3.4 Calico網路 281
6.4 Docker的鏡像最佳化 281
6.4.1 常規最佳化手段 282
6.4.2 案例實戰 287
6.5 Docker的安全策略與加固 292
6.5.1 Docker的安全策略 292
6.5.2 鏡像安全 293
6.5.3 容器網路的安全性 294
6.5.4 網路攻擊與防範 294
6.6 Docker的集群管理1——Swarm 295
6.6.1 Swarm集群管理1——Docker原生管理 295
6.6.2 Swarm集群管理2——Swarm集群搭建 297
6.6.3 Swarm集群管理3——Swarm WordPress部署 302
6.7 Docker的集群管理2——Kubernetes 303
6.7.1 Kubernetes容器編排1——簡介 303
6.7.2 Kubernetes容器編排2——架構 304
6.7.3 Kubernetes容器編排3——安裝 306
6.7.4 Kubernetes容器編排4——基本使用 310
6.7.5 Kubernetes套用實踐1——Kafka容器編排 315
6.7.6 Kubernetes套用實踐2——Redis容器編排 330
6.7.7 Kubernetes套用實踐3——部署監控系統 334
6.8 本章小結 337
第7章 手把手打造企業級套用
7.1 企業級雲原生的持續交付模型——GitOps實戰 338
7.1.1 GitOps的興起 338
7.1.2 GitOps流水線 340
7.1.3 GitOps最佳實踐 341
7.1.4 GitOps與可觀測性 341
7.1.5 GitOps的優勢 342
7.2 企業級容器化標準 343
7.2.1 容器化的目標 343
7.2.2 架構選型1——服務暴露 344
7.2.3 架構選型2——網路選型 348
7.2.4 架構選型3——存儲系統 349
7.2.5 服務治理1——部署發布 356
7.2.6 服務治理2——服務監控 358
7.2.7 服務治理3——日誌採集 360
7.2.8 服務治理4——鏈路追蹤 366
7.2.9 可靠性保障1——彈性部署 368
7.2.10 可靠性保障2——集群可靠性 370
7.3 企業級方案1——微服務套用實踐 372
7.3.1 套用演變過程中的痛點 372
7.3.2 微服務架構設計 376
7.3.3 微服務容器化的難點 381
7.3.4 服務格線1——服務格線與微服務 384
7.3.5 服務格線2——使用Istio方案 386
7.3.6 常見問題及解決方案 395
7.4 企業級方案2——打造多項目並行隔離環境 401
7.4.1 項目並行開發的痛點 401
7.4.2 容器化隔離環境方案 403
7.4.3 用Docker + Jenkins解決工程化問題 408
7.4.4 實現隔離外掛程式 414
7.4.5 配置Nginx Cookie識別與代理 417
7.4.6 使用Kustomize對Kubernetes進行聲明式管理 418
7.5 本章小結 421

作者簡介

王嘉濤(Jartto)
高級技術專家,技術部落格作者。擅長 Web 領域,對性能最佳化、工程化及容器化略有心得。現就職於美團,負責前端公共技術建設。
李傳龍(Alonso)
Kubernetes運維專家。在運維領域積累了豐富的實戰經驗,尤其是對服務容器化、PasS化、穩定性建設、運維體系建設等方面進行了深入探索。現就職於百度,負責雲相關運維。
盧桂周(Storm)
前端技術專家。在前端技術升級、UI自動化測試、CI/CD、前端工程化、服務容器化等方面有豐富的實戰經驗。現就職於拉勾,負責前端團隊。

相關詞條

熱門詞條

聯絡我們