Docker 實戰 Docker in Action

傑夫·尼克羅夫 (Jeff Nickoloff)

買這商品的人也買了...

商品描述

<內容簡介>

自從2013年3月Docker 0.1版本發布以來,以其為代表的容器技術發展也走上了快車道,Docker容器在很大程度上改變了軟件的架構設計、開發和運維部署方式,也給早些年就提出的微服務架構模式插上了快速起飛的翅膀。本書由Docker社區第一人Jeff Nickoloff編寫,共分為三部分,第一部分(1~6章)重點介紹Docker容器的資源隔離和權限控制及基礎理論,第二部分(7~10章)詳細解釋瞭如何打包製作鏡像以及各種鏡像分發基礎設施的建設,最後一部分(11~12章)聚焦於Docker容器的組合操作也就是多容器和多主機環境的管理。本書圖文並茂,結合基本原理和具體案例給大家提供了多個不錯的實戰機會。作為目前最炙手可熱的容器技術類圖書,本書適用於因特網、雲計算及企業級軟件開發、架構、測試及運維人員快速上手熟悉Docker容器,搭建以Docker為核心的基礎設施,並在生產環境中快速部署應用以及管理容器集群。

<章節目錄>

第1部分保持一臺乾淨的機器
第1章歡迎來到Docker世界2
1.1什麼是Docker 3
1.1.1容器3
1.1.2容器不是虛擬化4
1.1.3在隔離的容器中運行軟件4
1.1. 4分發容器6
1.2 Docker解決了什麼問題6
1.2.1有條理7
1.2.2提高可移植性8
1.2.3保護你的機器9
1.3為什麼Docker如此重要10
1.4何時何處使用Docker 11
1.5案例: “hello world” 11
1.6小結13
第2章在容器中運行軟件14
2.1從Docker命令行工具獲得幫助14
2.2控制容器:建立一個網站的監控器15
2.2.1創建和啟動一個新的容器16
2.2. 2運行交互式容器17
2.2.3列舉、停止、重新啟動和查看容器輸出18
2.3已解決的問題和PID命名空間20
2.4消除元數據衝突:構建一個網站農場23
2.4.1靈活的容器甄別24
2.4 .2容器的狀態和依賴26
2.5構建與環境無關的系統28
2.5.1只讀文件系統29
2.5.2環境變量的註入31
2.6建立持久的容器34
2.6.1自動重啟容器35
2.6.2保持容器運行init和supervisor進程36
2.7清理38
2.8小結39
第3章軟件安裝的簡化40
3.1甄別軟件41
3.1.1什麼是倉庫41
3.1.2使用標籤42
3.2查找和安裝軟件43
3.2.1命令行使用Docker Hub 43
3.2.2通過網站訪問Docker Hub 45
3.2.3使用替代註冊服務器47
3.2.4鏡像文件47
3.2.5從Dockerfile安裝49
3.3安裝文件和隔離49
3.3.1鏡像層實戰50
3.3.2分層關係51
3.3.3容器文件系統抽象和隔離52
3.3.4工具集和文件系統結構的好處53
3.3.5聯合文件系統的不足53
3.4小結54
第4章持久化存儲和捲間狀態共享55
4.1存儲捲的簡介56
4.1.1存儲捲提供容器無關的數據管理56
4.1.2 NoSQL數據庫使用存儲捲57
4.2存儲捲的類型60
4.2.1綁定掛載捲60
4.2.2 Docker託管捲63
4.3共享存儲捲65
4.3.1主機依賴的共享65
4.3.2通用共享和volumes-from標誌66
4.4託管捲的生命週期68
4.4.1託管捲的權限68
4.4.2存儲捲的清理69
4.5存儲捲的高級容器模式70
4.5.1存儲捲容器模式70
4.5.2數據經壓縮的存儲捲容器72
4.5.3多態容器模式73
4.6小結74
第5章網絡訪問75
5.1網絡相關的背景知識76
5.1.1基礎:協議,接口和埠76
5.1.2高級:網絡,NAT和埠轉發77
5.2 Docker的網絡79
5.2.1本地Docker網絡的拓撲結構79
5.2.2四種網絡結構原型80
5.3 Closed容器81
5.4 Bridged容器83
5.4.1訪問外部網絡84
5.4.2自定義命名解析85
5.4.3開放對容器的訪問88
5.4.4跨容器通信91
5.4.5修改網橋接口的配置92
5.5 Joined容器93
5.6 Open容器95
5.7跨容器依賴96
5.7.1鏈接——本地服務發現97
5.7.2鏈接別名98
5.7.3環境變量的改動99
5.7.4鏈接的本質和缺點101
5.8小結102
第6章隔離——限制危險103
6.1資源分配104
6.1.1內存限制104
6.1.2 CPU 105
6.1.3設備的訪問權108
6.2共享內存108
6.2.1跨容器的進程間通信109
6.2.2開放內存容器110
6.3理解用戶111
6.3.1 Linux用戶命令空間111
6.3.2 run-as用戶111
6.3.3用戶和捲114
6.4能力——操作系統功能的授權116
6.5運行特權容器117
6.6使用加強工具創建更健壯的容器118
6.6.1指定額外的安全選項119
6.6.2微調LXC 120
6.7因地制宜地構建容器121
6.7.1應用121
6.7.2高層的系統服務122
6.7.3低層的系統服務122
6.8小結122
第2部分鏡像發布:如何打包軟件
第7章在鏡像中打包軟件126
7.1從容器構建鏡像126
7.1.1打包Hello World 127
7.1.2打包Git 128
7.1.3審查文件系統的改動128
7.1.4 Commit——創建新鏡像129
7.1.5可配置的鏡像屬性130
7.2深入Docker鏡像和層131
7.2.1深入聯合文件系統132
7.2.2重新認識鏡像、層、倉庫和標籤134
7.2.3鏡像體積和層數限制137
7.3導出和導入扁平文件系統139
7.4版本控制的最佳實踐141
7.5小結143
第8章構建自動化和高級鏡像設置144
8.1使用Dockerfile打包Git 144
8.2 Dockerfile入門148
8.2.1元數據指令148
8.2.2文件系統指令152
8.3註入下游鏡像在構建時發生的操作155
8.4使用啟動腳本和多進程容器158
8.4.1驗證環境相關的先決條件158
8.4.2初始化進程160
8.5加固應用鏡像161
8.5.1內容可尋址鏡像標識符161
8.5. 2用戶權限162
8.5.3 SUID和SGID權限164
8.6小結166
第9章公有和私有軟件分發168
9.1選擇一個分發方法169
9.1.1分發選項圖譜169
9.1.2選擇標準169
9.2通過託管Registry發布172
9.2 .1通過公有倉庫發布:你好!Docker Hub 172
9.2.2使用自動構建發佈公有項目174
9.2.3私有託管倉庫176
9.3私有Registry介紹178
9.3.1使用Registry鏡像180
9.3.2從Registry使用鏡像181
9.4鏡像的手動發布和分發181
9.5鏡像源代碼分發工作流程186
9.6小結189
第10章運行自定義Registry 190
10.1運行個人Registry 191
10.1.1再度介紹鏡像192
10.1.2介紹V2 API 193
10.1.3定製鏡像195
10.2集中式Registry的增強196
10.2 .1創建一個反向代理197
10.2.2在反向代理上配置HTTP(TLS) 199
10.2.3添加身份認證層202
10.2.4客戶端兼容性206
10.2.5應用於生產環境之前208
10.3持久化的BLOB存儲210
10.3.1微軟Azure託管遠程存儲211
10.3.2 AWS S3託管遠程存儲212
10.3.3 RADOS(Ceph)的內部遠程存儲214
10.4擴展訪問和延遲的改進215
10.4.1與元數據緩存集成215
10.4.2使用存儲中間件簡化BLOB傳輸217
10.5通過通知集成219
10.6小結224
第3部分多容器和多主機環境
第11章Docker Compose聲明式環境228
11.1 Docker Compose:第一天的啟動並運行228
11.1.1用一個簡單的開發環境入門229
11.1.2一個複雜的架構:分佈式系統和Elasticsearch的集成231
11.2環境內的迭代233
11.2.1構建、啟動和重新構建服務234
11.2.2服務伸縮和刪除237
11.2.3迭代和持久化狀態238
11.2.4網絡和連接問題239
11.3開始一個新項目:三個示例中的Compose YAML 240
11.3.1啟動前的構建、環境、元數據和網絡240
11.3. 2已知的組件和綁定掛載捲241
11.3.3捲容器和擴展服務242
11.4小結243
第12章Docker Machine和Swarm集群245
12.1介紹Docker Machine 246
12.1.1構建和管理Docker Machine 246
12.1.2配置Docker客戶端與遠程Daemon工作249
12.2 Docker Swarm介紹252
12.2.1借助於Docker Machine構建Swarm集群252
12.2.2 Swarm擴展了Docker遠程API 255
12.3 Swarm調度258
12.3.1 Spread算法258
12.3.2用過濾器調整調度260
12.3.3 BinPack和隨機調度算法263
12.4 Swarm服務發現265
12.4.1 Swarm和單主機網絡266
12.4.2服務發現生態系統和權宜之計268
12.4.3展望多主機網絡269
12.5小結270
後記271

 

 

目錄大綱