Docker實(shí)戰(zhàn)派——容器入門七步法
定 價(jià):118 元
- 作者:王嘉濤
- 出版時(shí)間:2022/4/1
- ISBN:9787121431456
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP316.85
- 頁(yè)碼:432
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
云原生時(shí)代,應(yīng)用變得越來(lái)越強(qiáng)大,與此同時(shí),它的復(fù)雜度也在呈指數(shù)級(jí)上升。希望實(shí)現(xiàn)基礎(chǔ)設(shè)施和流程現(xiàn)代化,甚至組織文化現(xiàn)代化的企業(yè)的最終目標(biāo)是仔細(xì)選擇最適合其具體情況的云技術(shù)。在現(xiàn)代化的企業(yè)應(yīng)用中,集群部署、隔離環(huán)境、灰度發(fā)布、服務(wù)網(wǎng)格及動(dòng)態(tài)擴(kuò)容/縮容缺一不可,而Docker 技術(shù)則是其中間的必要橋梁。 本書將圍繞Docker 技術(shù)展開(kāi)介紹,通過(guò)“七步法”為讀者構(gòu)建完善的學(xué)習(xí)體系。開(kāi)篇先通過(guò)“蓋房子”的故事展開(kāi),讓讀者迅速了解Docker 是什么、能做什么。然后補(bǔ)充一些與Docker 技術(shù)相關(guān)的基礎(chǔ)知識(shí),包含Linux、Shell、Nginx 及網(wǎng)絡(luò)調(diào)試基礎(chǔ),為讀者的后續(xù)學(xué)習(xí)掃除障礙。最后通過(guò)示例幫助讀者進(jìn)行Docker 容器化體驗(yàn)。“授人以魚(yú),不如授人以漁”。本書通過(guò)剖析Docker 的核心原理、持續(xù)集成與發(fā)布及企業(yè)級(jí)應(yīng)用案例,一步步為讀者打造“通向企業(yè)級(jí)應(yīng)用”的階梯。 本書內(nèi)容詳盡,由淺入深,案例豐富。
王嘉濤 北京百家互聯(lián)科技有限公司,前端基礎(chǔ)技術(shù)負(fù)責(zé)人李傳龍 百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司高級(jí)工程師盧桂周 北京拉勾網(wǎng)絡(luò)技術(shù)有限公司高級(jí)工程師
★★第1章 快速了解Docker /1
1.1 Docker簡(jiǎn)介 /1
1.1.1 通過(guò)“蓋房子”來(lái)理解Docker—— 一次構(gòu)建,處處運(yùn)行 /1
1.1.2 Docker的適用人群 /3
1.1.3 Docker能解決什么問(wèn)題 /4
1.1.4 如何快速入門 /6
1.2 Docker的基本組成 /7
1.2.1 Docker的三大組成部分 /7
1.2.2 Docker的三大核心概念 /8
1.3 入門必備基礎(chǔ)知識(shí) /10
1.3.1 Linux基本操作 /10
1.3.2 Shell基礎(chǔ)命令 /22
1.3.3 網(wǎng)絡(luò)調(diào)試基礎(chǔ) /27
1.3.4 Nginx配置 /34
1.3.5 區(qū)分物理機(jī)、虛擬機(jī)與容器 /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 使用鏡像倉(cāng)庫(kù) /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 本章小結(jié) /77
★★第2章 開(kāi)始第一個(gè)Docker項(xiàng)目 /78
2.1 項(xiàng)目開(kāi)發(fā)的主要階段 /78
2.1.1 一般項(xiàng)目開(kāi)發(fā)的主要階段 /78
2.1.2 Docker項(xiàng)目開(kāi)發(fā)的主要階段 /79
2.2 項(xiàng)目前期準(zhǔn)備 /80
2.2.1 準(zhǔn)備相關(guān)環(huán)境 /80
2.2.2 準(zhǔn)備項(xiàng)目 /81
2.3 對(duì)Web項(xiàng)目進(jìn)行容器化改造 /84
2.3.1 構(gòu)建項(xiàng)目 /84
2.3.2 配置Nginx文件 /85
2.3.3 創(chuàng)建和配置Dockerfile文件 /88
2.4 構(gòu)建項(xiàng)目鏡像 /89
2.4.1 準(zhǔn)備啟動(dòng)環(huán)境 /89
2.4.2 構(gòu)建鏡像 /89
2.5 在容器中運(yùn)行項(xiàng)目鏡像 /91
2.5.1 運(yùn)行容器 /92
2.5.2 管理容器 /92
2.5.3 在瀏覽器中打開(kāi) /93
2.5.4 進(jìn)程管理 /93
2.5.5 日志查看 /96
2.6 管理鏡像 /97
2.6.1 了解鏡像倉(cāng)庫(kù) /97
2.6.2 最大的鏡像倉(cāng)庫(kù)——Docker Hub /98
2.6.3 把項(xiàng)目鏡像推送到遠(yuǎn)程鏡像倉(cāng)庫(kù)中 /98
2.7 發(fā)布項(xiàng)目 /102
2.7.1 準(zhǔn)備服務(wù)器環(huán)境 /102
2.7.2 部署項(xiàng)目 /103
2.7.3 確定容器是否運(yùn)行正常 /103
2.7.4 線上驗(yàn)證 /105
2.8 本章小結(jié) /106
★★第3章 了解Docker的核心原理 /107
3.1 熟悉Docker架構(gòu) /107
3.2 Linux的Namespace機(jī)制 /112
3.3 Linux底層的Cgroup隔離機(jī)制 /117
3.4 容器的生命周期 /120
3.4.1 容器的生命狀態(tài) /121
3.4.2 容器狀態(tài)之間的關(guān)系 /121
3.4.3 終止進(jìn)程的SIGKILL信號(hào)和SIGTERM信號(hào) /123
3.5 Docker的網(wǎng)絡(luò)與通信 /124
3.5.1 網(wǎng)絡(luò)驅(qū)動(dòng)程序 /124
3.5.2 網(wǎng)橋網(wǎng)絡(luò) /125
3.5.3 覆蓋網(wǎng)絡(luò) /127
3.5.4 Macvlan網(wǎng)絡(luò) /131
3.5.5 禁用Docker上的網(wǎng)絡(luò) /133
3.6 Docker UnionFS的原理 /135
3.6.1 UnionFS的概念 /135
3.6.2 加載Docker鏡像的原理 /135
3.7 Device Mapper存儲(chǔ) /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 最佳實(shí)踐 /146
3.8 Compose容器編排 /146
3.8.1 安裝Docker Compose /147
3.8.2 基本使用 /148
3.8.3 驗(yàn)證服務(wù)是否正常 /150
3.8.4 綁定目錄與更新應(yīng)用 /150
3.8.5 在后臺(tái)啟動(dòng)服務(wù) /151
3.8.6 部署分布式應(yīng)用 /151
3.9 Docker源碼分析 /156
3.9.1 給初學(xué)者的建議 /156
3.9.2 學(xué)習(xí)Docker源碼的思路 /157
3.9.3 容器是如何被啟動(dòng)的 /158
3.9.4 Docker Client是如何訪問(wèn)Docker Server的 /165
3.9.5 Docker Engine是如何工作的 /166
3.10 本章小結(jié) /169
★★第4章 趁熱打鐵,Docker項(xiàng)目實(shí)戰(zhàn) /170
4.1 前端環(huán)境準(zhǔn)備 /170
4.1.1 Web服務(wù)器——安裝Nginx /170
4.1.2 服務(wù)器端環(huán)境——安裝Node.js /172
4.2 前端應(yīng)用1——Web技術(shù)棧 /174
4.2.1 Web框架1——React實(shí)戰(zhàn) /174
4.2.2 Web框架2——Vue.js實(shí)戰(zhàn) /176
4.2.3 Web框架3——其他 /177
4.3 前端應(yīng)用2——Node.js /180
4.3.1 客戶端渲染——CSR實(shí)戰(zhàn) /180
4.3.2 服務(wù)器端渲染——SSR實(shí)戰(zhàn) /180
4.4 后端環(huán)境準(zhǔn)備 /182
4.4.1 注冊(cè)中心——ZooKeeper /182
4.4.2 消息隊(duì)列框架——Kafka /185
4.4.3 微服務(wù)框架——Dubbo /188
4.4.4 數(shù)據(jù)庫(kù)1——安裝Redis /191
4.4.5 數(shù)據(jù)庫(kù)2——安裝MySQL /192
4.4.6 數(shù)據(jù)庫(kù)3——安裝MongoDB /193
4.5 后端容器1——Java技術(shù)棧 /194
4.5.1 Java常用框架 /194
4.5.2 Java微服務(wù)容器化實(shí)戰(zhàn)——Spring Boot /197
4.5.3 Java技術(shù)棧改造的常見(jiàn)問(wèn)題 /202
4.6 后端容器2——Go語(yǔ)言技術(shù)棧 /204
4.6.1 Go語(yǔ)言常用框架 /204
4.6.2 Web框架改造1——Gin實(shí)戰(zhàn) /205
4.6.3 Web框架改造2——Beego實(shí)戰(zhàn) /209
4.6.4 Go語(yǔ)言技術(shù)棧改造的常見(jiàn)問(wèn)題 /212
4.7 后端容器3——Python技術(shù)棧 /213
4.7.1 Python常見(jiàn)框架 /214
4.7.2 Web框架改造——Django實(shí)戰(zhàn) /215
4.7.3 微服務(wù)框架改造——Nameko實(shí)戰(zhàn) /220
4.7.4 Python技術(shù)棧改造的常見(jiàn)問(wèn)題 /223
4.8 Docker測(cè)試實(shí)戰(zhàn) /224
4.8.1 Docker自動(dòng)化測(cè)試 /225
4.8.2 使用Docker測(cè)試靜態(tài)網(wǎng)站 /227
4.8.3 使用Docker進(jìn)行UI自動(dòng)化測(cè)試 /230
4.9 本章小結(jié) /237
★★第5章 Docker的持續(xù)集成與發(fā)布 /238
5.1 準(zhǔn)備鏡像倉(cāng)庫(kù) /238
5.1.1 倉(cāng)庫(kù)選型 /238
5.1.2 原生Docker倉(cāng)庫(kù) /239
5.1.3 Harbor鏡像倉(cāng)庫(kù) /240
5.2 初始化容器配置文件 /244
5.2.1 生成Dockerfile文件 /244
5.2.2 Dockerfile文件配置的最佳實(shí)踐 /245
5.3 通過(guò)Jenkins持續(xù)集成Docker /248
5.3.1 部署Jenkins /248
5.3.2 創(chuàng)建Jenkins流水線 /250
5.3.3 持續(xù)集成Docker /252
5.3.4 前端緩存優(yōu)化 /255
5.4 通過(guò)Jenkins發(fā)布Docker /257
5.4.1 使用Jenkins流水線部署容器 /258
5.4.2 基于Jenkins Job的多步構(gòu)建 /260
5.5 部署Docker容器監(jiān)控 /262
5.5.1 容器監(jiān)控的原理 /262
5.5.2 cAdvisor的部署與應(yīng)用 /263
5.6 本章小結(jié) /265
★★第6章 Docker的高級(jí)應(yīng)用 /266
6.1 Docker的容器與進(jìn)程 /266
6.1.1 容器是臨時(shí)的 /266
6.1.2 進(jìn)程的概念 /267
6.1.3 容器與進(jìn)程 /269
6.2 Docker的文件存儲(chǔ)與備份 /273
6.2.1 數(shù)據(jù)文件的存儲(chǔ) /273
6.2.2 卷存儲(chǔ) /274
6.2.3 綁定掛載 /276
6.2.4 tmpfs掛載 /277
6.2.5 數(shù)據(jù)文件的備份 /277
6.3 Docker的網(wǎng)絡(luò)配置 /278
6.3.1 Flannel網(wǎng)絡(luò) /279
6.3.2 Weave網(wǎng)絡(luò) /280
6.3.3 Open vSwitch /281
6.3.4 Calico網(wǎng)絡(luò) /281
6.4 Docker的鏡像優(yōu)化 /281
6.4.1 常規(guī)優(yōu)化手段 /282
6.4.2 案例實(shí)戰(zhàn) /287
6.5 Docker的安全策略與加固 /292
6.5.1 Docker的安全策略 /292
6.5.2 鏡像安全 /293
6.5.3 容器網(wǎng)絡(luò)的安全性 /294
6.5.4 網(wǎng)絡(luò)攻擊與防范 /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——簡(jiǎn)介 /303
6.7.2 Kubernetes容器編排2——架構(gòu) /304
6.7.3 Kubernetes容器編排3——安裝 /306
6.7.4 Kubernetes容器編排4——基本使用 /310
6.7.5 Kubernetes應(yīng)用實(shí)踐1——Kafka容器編排 /315
6.7.6 Kubernetes應(yīng)用實(shí)踐2——Redis容器編排 /330
6.7.7 Kubernetes應(yīng)用實(shí)踐3——部署監(jiān)控系統(tǒng) /334
6.8 本章小結(jié) /337
★★第7章 手把手打造企業(yè)級(jí)應(yīng)用 /338
7.1 企業(yè)級(jí)云原生的持續(xù)交付模型——GitOps實(shí)戰(zhàn) /338
7.1.1 GitOps的興起 /338
7.1.2 GitOps流水線 /340
7.1.3 GitOps最佳實(shí)踐 /341
7.1.4 GitOps與可觀測(cè)性 /341
7.1.5 GitOps的優(yōu)勢(shì) /342
7.2 企業(yè)級(jí)容器化標(biāo)準(zhǔn) /343
7.2.1 容器化的目標(biāo) /343
7.2.2 架構(gòu)選型1——服務(wù)暴露 /344
7.2.3 架構(gòu)選型2——網(wǎng)絡(luò)選型 /348
7.2.4 架構(gòu)選型3——存儲(chǔ)系統(tǒng) /349
7.2.5 服務(wù)治理1——部署發(fā)布 /356
7.2.6 服務(wù)治理2——服務(wù)監(jiān)控 /358
7.2.7 服務(wù)治理3——日志采集 /360
7.2.8 服務(wù)治理4——鏈路追蹤 /366
7.2.9 可靠性保障1——彈性部署 /368
7.2.10 可靠性保障2——集群 可靠性 /370
7.3 企業(yè)級(jí)方案1——微服務(wù)應(yīng)用實(shí)踐 /372
7.3.1 應(yīng)用演變過(guò)程中的痛點(diǎn) /372
7.3.2 微服務(wù)架構(gòu)設(shè)計(jì) /376
7.3.3 微服務(wù)容器化的難點(diǎn) /381
7.3.4 服務(wù)網(wǎng)格1——服務(wù)網(wǎng)格與微服務(wù) /384
7.3.5 服務(wù)網(wǎng)格2——使用Istio方案 /386
7.3.6 常見(jiàn)問(wèn)題及解決方案 /395
7.4 企業(yè)級(jí)方案2——打造多項(xiàng)目并行隔離環(huán)境 /401
7.4.1 項(xiàng)目并行開(kāi)發(fā)的痛點(diǎn) /401
7.4.2 容器化隔離環(huán)境方案 /403
7.4.3 用Docker + Jenkins解決工程化問(wèn)題 /408
7.4.4 實(shí)現(xiàn)隔離插件 /414
7.4.5 配置Nginx Cookie識(shí)別與代理 /417
7.4.6 使用Kustomize對(duì)Kubernetes進(jìn)行聲明式管理 /418
7.5 本章小結(jié) /421