Docker 開發指南 (Using Docker: Developing and Deploying Software with Containers)

阿德里安·莫阿特 (Adrian Mouat)

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

商品描述

Docker容器輕量和可移植的特性尤其適用於動態和分佈式的環境,它的興起給軟件開發流程帶來了一場革命。Docker開發指南對Docker進行了全面講解,包括開發、生產以至維護的整個軟件生命周期,並對其中可能出現的一些問題進行了探討,如軟件版本差異、開發環境與生產環境的差異、系統安全問題,等等。

作者簡介

作者:[英]阿德里安·莫阿特(Adrian Mouat)譯者:黃彥邦
Adrian Mouat,Container Solutions公司首席科學家。參與過很多軟件項目,既有小型的Web應用,也有大型數據分析軟件。

黃彥邦(Anthony Wong)【譯者簡介】
Linux開發專家,熱衷於開源技術,從事Linux相關開發工作十多年,曾參與多個大型開源項目,如Debian GNU/Linux和Ubuntu,提交補丁無數。以推動Debian系統中文化以及網站和文檔翻譯為目標,1998年成為中國首位Debian計劃官方開發者。

目錄大綱

前言

第一部分背景與基礎
第1章何謂容器,為何需要它3 
1.1容器與虛擬機的比較4 
1.2 Docker與容器5 
1.3 Docker的歷史7 
1.4插件與基礎設施8 
1.564位Linux 9 

第2章安裝10 
2.1在Linux上安裝Docker 10 
2.1.1將SELinux置於寬容模式下運行11 
2.1.2不使用sudo命令執行Docker 11 
2.2在MacOS及Windows上安裝Docker 12 
2.3快速確認13 

第3章邁出第一步15 
3.1運行第一個鏡像15 
3.2基本命令16 
3.3通過Dockerfile創建鏡像20 
3.4使用寄存服務22 
3.5使用Redis官方鏡像24 
3.6總結27 

第4章Docker基本概念28 
4.1 Docker系統架構28 
4.1.1底層技術29 
4.1.2周邊技術30 
4.1.3 Docker託管31 
4.2鏡像是如何生成的32 
4.2.1構建環境的上下文32 
4.2.2鏡像層33
4.2.3緩存35 
4.2.4基礎鏡像35 
4.2.5 Dockerfile指令37 
4.3使容器與世界相連39 
4.4容器互聯40 
4.5利用數據捲和數據容器管理數據41 
4.5.1共享數據43 
4.5.2數據容器44 
4.6 Docker常用命令45 
4.6.1 run命令46 
4.6.2容器管理48 
4.6.3 Docker信息50 
4.6.4容器信息50 
4.6.5鏡像管理52 
4.6.6使用寄存服務器54 
4.7總結55 

第二部分Docker與軟件生命週期
第5章在開發中應用Docker 59 
5.1說聲“HelloWorld!” 59 
5.2通過Compose實現自動化67 
5.3總結69 

第6章創建一個簡單的Web應用71 
6.1創建一個基本網頁72 
6.2利用現有鏡像73 
6.3實現緩存功能78 
6.4微服務81 
6.5總結81 

第7章鏡像分發82 
7.1鏡像及鏡像庫的命名方式82 
7.2 DockerHub 83 
7.3自動構建85
7.4私有分發86 
7.4.1運行自己的寄存服務86 
7.4.2商業寄存服務92 
7.5縮減鏡像大小92 
7.6鏡像出處94 
7.7總結94 

第8章Docker持續集成與測試95 
8.1為identidock添加單元測試95 
8.2創建Jenkins容器100 
8.3推送鏡像106 
8.3.1給鏡像正確的標籤106 
8.3.2準生產及生產環境108 
8.3.3鏡像數量激增的問題108 
8.3.4使用Docker部署Jenkinsslaves 109 
8.4備份Jenkins數據109 
8.5持續集成的託管解決方案109 
8.6測試與微服務110 
8.7總結111 

第9章部署容器113 
9.1通過DockerMachine配置資源114 
9.2使用代理117 
9.3執行選項122 
9.3.1 shell腳本122 
9.3.2使用進程管理器(或用systemd控制所有進程) 124 
9.3.3使用配置管理工具127 
9.4主機配置130 
9.4.1選擇操作系統130 
9.4.2選擇存儲驅動程序130
9.5專門的託管方案132 
9.5.1 Triton 132 
9.5.2谷歌容器引擎134 
9.5.3亞馬遜EC2容器服務135 
9.5.4 GiantSwarm 136 
9.6持久性數據和生產環境容器138 
9.7分享秘密信息139 
9.7.1在鏡像中保存秘密信息139 
9.7.2通過環境變量傳遞密鑰139 
9.7.3通過數據卷傳遞密鑰140 
9.7.4使用鍵值存儲140 
9.8網絡連接141 
9.9生產環境的寄存服務141 
9.10持續部署/交付141 
9.11總結142
 
第10章日誌記錄和監控143 
10.1日誌記錄144 
10.1.1 Docker默認的日誌記錄144 
10.1.2日誌匯總145 
10.1.3使用ELK進行日誌記錄146 
10.1.4通過syslog實現日誌管理155 
10.1. 5從文件抓取日誌160 
10.2監控和警報161 
10.2.1使用Docker工具進行監測161 
10.2.2 cAdvisor 162 
10.2.3集群解決方案163 
10.3商用的監聽及日誌記錄解決方案166 
10.4總結166

第三部分工具和技術
第11章聯網和服務發現169 
11.1大使容器170 
11.2服務發現173 
11.2.1 etcd 173 
11.2.2 SkyDNS 177 
11.2.3 Consul 181 
11.2.4服務註冊185 
11.2.5其他解決方案186 
11.3聯網選項187 
11.3.1網橋模式187 
11.3.2主機模式188 
11.3.3容器模式188 
11.3.4未聯網模式188 
11.4全新的Docker聯網功能188 
11.5網絡解決方案190 
11.5.1 Overlay 191 
11.5.2 Weave 193 
11.5.3 Flannel 196 
11.5.4 Calico項目201 
11.6總結205 

第12章編排、集群和管理207 
12.1集群和編排工具208 
12.1.1 Swarm 208 
12.1.2 fleet 214 
12.1.3 Kubernetes 219 
12.1.4 Mesos和Marathon 226 
12.2容器管理平台235 
12.2.1 Rancher 236
12.2.2 Clocker 237 
12.2.3 Tutum 238 
12.3總結239 

第13章容器安全與限制容器241 
13.1需要考慮的事項242 
13.2縱深防禦244 
13.3如何保護identidock 245 
13.4以主機隔離容器246 
13.5進行更新246 
13.6鏡像出處249 
13.6.1 Docker摘要250 
13.6.2 Docker的內容信任機制250 
13.6.3可複制及可信任的Dockerfile 254 
13.7安全建議256 
13.7.1設置用戶256 
13.7.2限制容器聯網257 
13.7.3刪除setuid和setgid的二進製文件258 
13.7.4限制內存使用259 
13.7.5限制CPU使用260 
13.7.6限制重新啟動261 
13.7.7限製文件系統261 
13.7.8限制內核能力262 
13.7.9應用資源限制263 
13.8運行加固內核264 
13.9 Linux安全模塊265 
13.9.1 SELinux 265 
13.9.2 AppArmor 268 
13.10審核268
13.11事件響應269 
13.12未來特性269 
13.13總結270 
作者簡介271 
關於封面271