Docker 實戰, 2/e (Docker in Action, 2/e)

Docker 實戰, 2/e (Docker in Action, 2/e)

作者: Nickoloff Jeff Kuenzli Stephen 耿蘇寧譯
出版社: 清華大學
出版在: 2021-03-01
ISBN-13: 9787302574675
ISBN-10: 7302574677
裝訂格式: 平裝
總頁數: 327 頁





內容描述


《 Docker實戰(第2版)》聚焦於創建、部署和管理運行在Linux操作系統上的Docker容器中的應用程序。本書對內容做了全面更新,新增了4章,修訂了更佳實踐和示例。書中首先對Docker模型做了清晰解釋,然後開始打包應用程序,安全地測試、安裝和運行應用程序,並將它們部署到主機集群中。本書通過示例展示了Docker如何使整個開發生命周期受益,讀者將學到從開發、測試機器到進行全面雲部署的各種技術。 主要內容 在容器中運行軟件 為更好地部署而打包軟件 安全和分發容器化應用程序


目錄大綱


目錄
第1 章  歡迎來到Docker的世界   1
1.1  Docker是什麽   2
1.1.1  “hello,world”示例   3
1.1.2  容器   4
1.1.3  容器不是虛擬化   5
1.1.4  在隔離容器中運行軟件   5
1.1.5  分發容器   7
1.2  Docker解決了什麽問題   7
1.2.1  變得有組織性   8
1.2.2  改善可移植性   9
1.2.3  保護你的電腦   10
1.3  Docker為什麽重要   11
1.4  何時、何地使用Docker   12
1.5  更大生態系統中的Docker   13
1.6  從Docker命令行獲取幫助   14
1.7  本章小結   14
第Ⅰ部分  進程隔離與環境獨立計算
第2 章  在容器中運行軟件   19
2.1  控制容器:構建網站監視器   19
2.1.1  創建和啟動新容器   20
2.1.2  運行交互式容器   22
2.1.3  羅列、停止、重啟和查看容器的輸出   23
2.2  被解決的問題和PID命名空間   25
2.3  消除元數據沖突:建立網站農場   28
2.3.1  靈活的容器識別   29
2.3.2  容器的狀態和依存關系   32
2.4  構建與環境無關的系統   35
2.4.1  只讀文件系統   35
2.4.2  註入環境變量   39
2.5  建立持久的容器   42
2.5.1  自動重啟容器   43
2.5.2  使用PID 1和init系統   44
2.6  清除工作   46
2.7  本章小結   48
第3 章  使用Docker安裝軟件   49
3.1  識別軟件   50
3.1.1  命名倉庫是什麽   50
3.1.2  使用標簽   51
3.2  尋找和安裝軟件   52
3.2.1  從命令行使用Docker註冊表   52
3.2.2  使用備用的註冊表   53
3.2.3  將鏡像作為文件處理   54
3.2.4  從Dockerfile進行安裝   55
3.2.5  使用Docker Hub   56
3.3  安裝文件和隔離   58
3.3.1  實際的鏡像層級   58
3.3.2  層級的關系   60
3.3.3  容器文件系統的抽象和隔離   61
3.3.4  這一工具集和聯合文件系統結構的優點   62
3.3.5  聯合文件系統的缺點   62
3.4  本章小結   63
第4 章  使用存儲和捲   65
4.1  文件樹和掛載點   66
4.2  綁定掛載   67
4.3  常駐內存存儲   70
4.4  Docker捲   71
4.4.1  捲提供容器無關的數據管理   73
4.4.2  在NoSQL數據庫中使用捲   74
4.5  共享掛載點和共享文件   77
4.6  清理捲   81
4.7  使用捲插件的高級存儲   83
4.8  本章小結   83
第5 章  單主機網絡   85
5.1  網絡背景(面向初學者)   85
5.1.1  基本知識:協議、接口和埠   86
5.1.2  深入知識:網絡、NAT和埠轉發   87
5.2  Docker容器網絡   88
5.2.1  創建用戶自定義的橋接網絡   89
5.2.2  探索橋接網絡   91
5.2.3  更多網絡類型   94
5.3  特殊容器網絡:主機網絡和none網絡   95
5.4  使用NodePort publishing處理入站流量   96
5.5  容器網絡註意事項和定製化   98
5.5.1  沒有防火牆或網絡策略   98
5.5.2  自定義DNS配置   99
5.5.3  外部化網絡管理   103
5.6  本章小結   104
第6 章  通過資源控制來限制風險   105
6.1  設置資源配額   106
6.1.1  內存限制   106
6.1.2  CPU   108
6.1.3  訪問設備   111
6.2  共享內存   111
6.3  理解用戶   114
6.3.1  使用運行時用戶   114
6.3.2  用戶和捲   117
6.3.3  用戶命名空間和UID重映射   119
6.4  根據功能集調整操作系統功能訪問範圍   121
6.5  以完全特權運行容器   123
6.6  使用增強的工具加固容器   124
6.7  構建適合用例的容器   126
6.7.1  應用程序   127
6.7.2  高層的系統服務   127
6.7.3  低層的系統服務   128
6.8  本章小結   128
第Ⅱ部分  打包軟件進行分發
第7 章  將軟件打包到鏡像中   133
7.1  從容器構建鏡像   133
7.1.1  打包“hello,world”程序   134
7.1.2  準備打包Git程序   135
7.1.3  查看文件系統的更改項   136
7.1.4  提交新的鏡像   137
7.1.5  配置鏡像屬性   138
7.2  深入研究Docker鏡像和層級   140
7.2.1  探索聯合文件系統   140
7.2.2  重新認識鏡像、層級、倉庫和標簽   143
7.2.3  管理鏡像大小和層級的限制   146
7.3  導出和導入平面文件系統   148
7.4  版本控制的最佳實踐   151
7.5  本章小結   153
第8 章  使用Dockerfile自動構建鏡像   155
8.1  使用Dockerfile打包Git程序   155
8.2  Dockerfile入門   160
8.2.1  元數據指令   160
8.2.2  文件系統指令   165
8.3  在構建下游層級時註入行為   169
8.4  創建可維護的Dockerfile   172
8.5  使用啟動腳本和多進程容器   177
8.5.1  驗證前提條件   177
8.5.2  初始化進程   179
8.5.3  健康檢查的目的和用途   180
8.6  構建加固的應用程序鏡像   182
8.6.1  內容可尋址鏡像標識符   183
8.6.2  用戶權限   183
8.6.3  SUID和SGID權限   186
8.7  本章小結   188
第9 章  公共和私有軟件分發   191
9.1  選擇分發方法   191
9.1.1  鏡像分發頻譜   192
9.1.2  選擇標準   192
9.2  在托管註冊表中發布鏡像   195
9.2.1  在Docker Hub的公共倉庫中發布鏡像   195
9.2.2  私有托管倉庫   198
9.3  引入私有註冊表   200
9.3.1  使用註冊表鏡像   202
9.3.2  從註冊表中消費鏡像   204
9.4  手動發布和分發鏡像   205
9.5  鏡像源代碼分發流程   211
9.6  本章小結   213
第10 章  鏡像構建管道   215
10.1  鏡像構建管道的目標   215
10.2  構建鏡像的模式   217
10.2.1  多合一鏡像   217
10.2.2  分離構建時和運行時鏡像   218
10.2.3  通過多階段構建來更改運行時鏡像   220
10.3  在構建鏡像時記錄元數據   222
10.4  在鏡像構建管道中測試鏡像   229
10.5  標記鏡像的模式   232
10.5.1  背景   232
10.5.2  帶有唯一標簽的持續交付   233
10.5.3  帶有具體環境工件的持續交付   233
10.5.4  語義版本控制   235
10.6  本章小結   236
第Ⅲ部分  更高層次的抽象與編排
第11 章  Docker和Compose服務   239
11.1  “Hello World!”服務   240
11.1.1  自動復活和復制   242
11.1.2  自動推出   244
11.1.3  服務運行狀況與回滾   246
11.2  使用Compose V3的聲明式服務環境   249
11.2.1  YAML入門   251
11.2.2  Compose V3的服務集合   253
11.3  帶有狀態的服務和保留的數據   258
11.4  使用Compose進行負載均衡、服務發現和聯網   260
11.5  本章小結   264
第12 章  一流的配置   265
12.1  配置的分發和管理   266
12.2  分離應用程序和配置   267
12.2.1  使用配置資源   270
12.2.2  部署應用程序   271
12.2.3  直接管理配置資源   273
12.3  一種特殊的配置:機密信息   277
12.4  本章小結   285
第13 章  使用Swarm在Docker主機集群上編排服務   287
13.1  使用Docker Swarm集群   287
13.1.1  Docker Swarm模式介紹   288
13.1.2  部署Swarm集群   289
13.2  將應用程序部署到Swarm集群   290
13.2.1  Docker Swarm集群資源類型介紹   290
13.2.2  使用Docker服務定義應用程序及其依賴項   291
13.2.3  部署應用程序   297
13.3  與Swarm集群內運行的服務通信   303
13.3.1  使用Swarm路由網格將客戶端請求路由到服務   304
13.3.2  使用覆蓋網絡   306
13.3.3  在覆蓋網絡上發現服務   307
13.3.4  在覆蓋網絡上隔離服務之間的通信   310
13.3.5  負載均衡   312
13.4  將服務任務放置在集群中   313
13.4.1  復制服務   314
13.4.2  約束任務的運行位置   318
13.4.3  使用全局服務方式在每個節點上部署一個任務   325
13.4.4  將真實的應用程序部署到真實的集群中   326
13.5  本章小結   327


作者介紹


傑夫·尼克羅夫Jeff Nickoloff有能力構建大型服務,撰寫技術文章,並幫助人們實現產品目標,他曾在亞馬遜、Limelight Networks和亞利桑那州立大學從事過這些工作。
2014年離開亞馬遜後,Jeff成立了一家諮詢公司,致力於為財富100強公司和初創企業提供工具、培訓和最佳實踐方案。
在2019年,Jeff和Pottia Dean共同創立了Topple公司,以提供服務的方式構建生產力軟件。
Topple公司致力於幫助團隊解決工作中的溝通和協調問題,因為這些問題會使整個團隊放慢腳步,讓業務處於風險中,並且通常還會使工作變得很糟糕。




相關書籍

Collaboration with Cloud Computing: Security, Social Media, and Unified Communications (Paperback)

作者 Ric Messier

2021-03-01

現在學正是時候:用 Docker + Kubernetes 建立永續叢集服務

作者 羅利民

2021-03-01

OpenStack身份識別、授權與訪問管理

作者 Steve Martinelli Henry Nash Brad Topol

2021-03-01