Docker實踐

網站

更多書籍點擊進入>> CiCi島php

下載

電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支持正版,喜歡的請購買正版書籍html

封頁

封頁

編輯推薦

做爲一個開源的容器系統,Docker 讓部署應用程序變得既平滑又靈活。Docker 強大又易於使用,並且它經過更短的構建週期、更少的產品缺陷、無需費力的應用程序滾動發行,讓開發人員和系統管理的工做都更加容易。 這是一本涵蓋了101 個技巧的實操指南,讀者能夠用它來得到Docker 的大部分知識。本書遵循手冊風格的「問題/ 解決方案/ 討論」模式,針對很重要的問題,如輕鬆的服務器管理和配置、部署微服務、爲實驗而建立安全的環境等,爲讀者提供了及時有用的解決方案。在閱讀本書的過程當中,讀者不但能學到Docker 的基礎知識,還能學到Docker 的實踐,如將Docker 和持續集成過程結合使用、使用Chef 來自動化複雜容器的建立過程以及使用Kubernetes 進行容器編排等。 本書主要內容 ● 加速 DevOps流水線。 ● 成本低廉地替換虛擬機。 ● 提升雲端工做流程的效率。 ● 使用 Docker Hub。 ● 引 領到 Docker 生態系統。 本書寫給對Docker 感興趣的人。ios

內容簡介

《Docker實踐》由淺入深地講解了Docker的相關內容,涵蓋從開發環境到DevOps流水線,再一路到生產環境的整個落地過程以及相關的實用技巧。書中介紹Docker的核心概念和架構,以及將Docker和開發環境有機、高效地結合起來的方法,包括用做輕量級的虛擬機以及構建和宿主機編排、配置管理、精簡鏡像等。不只如此,本書還經過「問題/解決方案/討論」的形式,將「Docker如何融入DevOps流水線」「如何在生產環境落地」等一系列難題拆解成101個相關的實用技巧,爲讀者提供解決方案以及一些細節和技巧方面的實踐經驗。閱讀本書,讀者將學到的不僅是Docker,還包括持續集成、持續交付、構建和鏡像管理、容器編排等相關領域的一線生產經驗。本書編寫時一些案例參考的Docker版本是Docker 1.9。 《Docker實踐》要求讀者具有必定的容器管理和運維的基礎知識,適合想要將Docker投入實踐的相關技術人員閱讀,尤爲適合具備中 高 級DevOps和運維背景的讀者閱讀。git

做者簡介

伊恩·米爾(Ian Miell)和艾丹·霍布森·塞耶斯(Aidan HobsonSayers)對Docker 有所貢獻,而且在大規模環境裏構建和維護基於Docker 的基礎設施方面有豐富的經驗。 譯者簡介 吳佳興,畢業於華東理工大學計算機系,目前是bilibili 基礎平臺研發團隊的一員,主要研究方向有CI\CD、監控和運維自動化、基於容器的PaaS 平臺建設、微服務架構等。2014 年年末有幸加入DockOne 社區,做爲譯者,利用閒暇時間爲社區貢獻一些微薄的力量。我的博客。歡迎郵件聯繫。 黃博文,ThoughtWorks 資 深軟件工程師/諮詢師,擔任過開發、測試、運維、技術經理等角色,在國內外多家企業作過技術教練以及技術諮詢,擁有豐富的敏捷團隊工做經驗。目前專一於DevOps 技術及雲端架構,在搭建持續集成及部署平臺、自動化構建基礎設施、虛擬化環境、雲端運維等方面有着豐富的經驗。擁有AWS 解決方案架構師以及開發 者證書。我的博客爲t,我的郵箱爲。譯做有《Effective JavaScript》《Html5 和CSS3 響應式設計指南》《C#多線程編程實戰》《面向對象的思考過程》《基礎設施即代碼》等。 楊銳,前ThoughtWorks 諮詢師,DevOps 領域持續關注者,任職期間曾任某海外大型項目DevOps 工程師,對其持續交付、基礎設施即代碼、流水線即代碼等方面進行了持續推進,對雲計算、容器化、持續交付等有必定經驗。現供職美團點評。 梁曉勇,畢業於廈門大學,現任某互聯網金融公司架構師,DockOne 社區編外人員。長期奮戰在技術研發第 一線,在網絡管理、技術開發、架構設計等方面略有心得。熱愛互聯網技術,積極投身開源社區,對Docker 等容器技術具備濃厚興趣。歡迎郵件聯繫github

目 錄

第 一部分 Docker基礎

第 1章 Docker初探 3

1.1 Docker是什麼以及爲何用Docker 4

1.1.1 Docker是什麼 4

1.1.2 Docker有什麼好處 6

1.1.3 關鍵的概念 8

1.2 構建一個Docker應用程序 10

1.2.1 建立新的Docker鏡像的方式 11

1.2.2 編寫一個Dockerfile 11

1.2.3 構建一個Docker鏡像 12

1.2.4 運行一個Docker容器 14

1.2.5 Docker分層 16

1.3 小結 17

第 2章 理解Docker——深刻引擎室 18

2.1 Docker的架構 18

2.2 Docker守護進程 20

技巧1 向世界開放Docker守護進程 20

技巧2 以守護進程方式運行容器 22

技巧3 將Docker移動到不一樣分區 24

2.3 Docker客戶端 25

技巧4 使用socat監控Docker API流量 25

技巧5 使用端口鏈接容器 28

技巧6 連接容器實現端口隔離 29

技巧7 在瀏覽器中使用Docker 31

2.4 Docker註冊中心 33

技巧8 創建一個本地Docker註冊中心 34

2.5 Docker Hub 34

技巧9 查找並運行一個Docker鏡像 35

2.6 小結 37

第 二部分 Docker與開發

第3章 將Docker用做輕量級虛擬機 41

3.1 從虛擬機到容器 42

技巧10 將虛擬機轉換爲容器 42

技巧11 類宿主機容器 44

技巧12 將一個系統拆成微服務容器 46

3.2 管理容器的服務 49

技巧13 管理容器內服務的啓動 50

3.3 保存和還原工做成果 52

技巧14 在開發中「保存遊戲」的方式 52

技巧15 給Docker打標籤 54

技巧16 在Docker Hub上分享鏡像 56

技巧17 在構建時指向特定的鏡像 58

3.4 進程即環境 59

技巧18 在開發中「保存遊戲」的方式 59

3.5 小結 61

第4章 Docker平常 62

4.1 卷——持久化問題 62

技巧19 Docker卷——持久化的問題 63

技巧20 經過BitTorrent Sync的分佈式卷 64

技巧21 保留容器的bash歷史 66

技巧22 數據容器 68

技巧23 使用SSHFS掛載遠程卷 70

技巧24 經過NFS共享數據 72

技巧25 開發工具容器 75

4.2 運行容器 76

技巧26 在Docker裏運行GUI 76

技巧27 檢查容器 78

技巧28 乾淨地殺掉容器 80

技巧29 使用Docker Machine來置備Docker宿主機 81

4.3 構建鏡像 84

技巧30 使用ADD將文件注入到鏡像 85

技巧31 從新構建時不使用緩存 87

技巧32 拆分緩存 89

4.4 保持陣型 90

技巧33 運行Docker時不加sudo 90

技巧34 清理容器 91

技巧35 清理卷 92

技巧36 解綁容器的同時不停掉它 94

技巧37 使用DockerUI來管理Docker守護進程 95

技巧38 爲Docker鏡像生成一個依賴圖 96



技巧39 直接操做——對容器執行命令 97

4.5 小結 99

第5章 配置管理——讓一切井井有理 100

5.1 配置管理和Dockerfile 100

技巧40 使用ENTRYPOINT建立可靠的定製工具 101

技巧41 在構建中指定版原本避免軟件包的漂移 102

技巧42 用perl -p -i -e替換文本 104

技巧43 鏡像的扁平化 105

技巧44 用alien管理外來軟件包 107

技巧45 把鏡像逆向工程獲得Dockerfile 109

5.2 傳統配置管理工具與Docker 112

技巧46 傳統方式:搭配make和Docker 112

技巧47 藉助Chef Solo構建鏡像 114

技巧48 從源到鏡像的構建 118

5.3 小便是美 123

技巧49 保持構建鏡像更小的Dockerfile技巧 123

技巧50 讓鏡像變得更小的技巧 126

技巧51 經過BusyBox和Alpine來精簡Docker鏡像 128

技巧52 Go模型的小容器 129

技巧53 使用inotifywait給容器瘦身 132

技巧54 大也能夠美 134

5.4 小結 136

第三部分 Docker與DevOps

第6章 持續集成:加快開發流水線 139

6.1 Docker Hub自動化構建 139

技巧55 使用Docker Hub工做流 140

6.2 更有效的構建 143

技巧56 使用eatmydata爲I/O密集型構建提速 143

技巧57 設置一個軟件包緩存用於加快構建速度 145

技巧58 在Docker內部運行Selenium測試 147

6.3 容器化CI過程 151

技巧59 包含一個複雜的開發環境 151

技巧60 在一個Docker容器裏運行Jenkins主服務器 156

技巧61 使用Jenkins的Swarm插件擴展CI 158

6.4 小結 161

第7章 持續交付:與Docker原則完 美契合 162

7.1 在CD流水線上與其餘團隊互動 163

技巧62 Docker契約——減小摩擦 163

7.2 推進Docker鏡像的部署 165

技巧63 手動同步註冊中心鏡像 165

技巧64 經過受限鏈接交付鏡像 166

技巧65 以TAR文件方式共享Docker對象 168

7.3 爲不一樣環境配置鏡像 170

技巧66 使用etcd通知容器 170

7.4 升級運行中的容器 172

技巧67 使用confd啓用零停機時間切換 173

7.5 小結 177

第8章 網絡模擬:無痛的現實環境測試 178

8.1 容器通訊——超越手工連接 178

技巧68 一個簡單的Docker Compose集羣 178

技巧69 一個使用Docker Compose的SQLite服務器 182

技巧70 使用Resolvable經過DNS查找容器 185

8.2 使用Docker來模擬真實世界的網絡 188

技巧71 使用Comcast模擬有問題的網絡 188

技巧72 使用Blockade模擬有問題的網絡 191

8.3 Docker和虛擬網絡 194

技巧73 使用Weave創建一個基底網絡 195

技巧74 Docker的網絡與服務功能 198

8.4 小結 201

第四部分 生產環境中的Docker

第9章 容器編排:管理多個Docker容器 205

9.1 簡單的單臺宿主機 206

技巧75 使用systemd管理宿主機上的容器 206

技巧76 使用systemd編排宿主機上的容器 210

9.2 多宿主機Docker 212

技巧77 使用Helios手動管理多宿主機Docker 213

技巧78 基於Swarm的無縫Docker集羣 219

技巧79 使用Kubernetes集羣 222

技巧80 在Mesos上構建框架 228

技巧81 使用Marathon細粒度管理Mesos 235

9.3 服務發現:咱們有什麼 238

技巧82 使用Consul來發現服務 238

技巧83 使用Registrator進行自動化服務註冊 246

9.4 小結 248

第 10章 Docker與安全 249

10.1 Docker訪問權限及其意味着什麼 249

10.2 Docker中的安全手段 250

技巧84 限制能力 251

技巧85 Docker實例上的HTTP認證 253

技巧86 保護Docker API 257

10.3 來自Docker之外的安全 260

技巧87 OpenShift——一個應用程序平臺即服務 260

技巧88 使用安全選項 269

10.4 小結 275

第 11章 一路順風——生產環境中的Docker以及運維上的考量 276

11.1 監控 276

技巧89 記錄容器的日誌到宿主機的syslog 276

技巧90 把Docker日誌發送到宿主機的輸出系統 279

技巧91 使用cAdvisor監控容器 281

11.2 資源控制 282

技巧92 限制容器能夠運行的內核 282

技巧93 給重要的容器更多CPU 283

技巧94 限制容器的內存使用 285



11.3 Docker的系統管理員用例 286

技巧95 使用Docker來運行cron做業 286

技巧96 經過「保存遊戲」的方法來備份 289

11.4 小結 291

第 12章 Docker生產環境實踐——應對各項挑戰 292

12.1 性能——不能忽略宿主機 292

技巧97 從容器訪問宿主機資源 292

技巧98 Device Mapper存儲驅動和默認的容器大小 296

12.2 在容器出問題時——調試Docker 298

技巧99 使用nsenter調試容器的網絡 298

技巧100 無須從新配置,使用tcpflow進行實時調試 301

技巧101 調試在特定宿主機上出問題的容器 302

12.3 小結 306

附錄A 安裝並使用Docker 307

附錄B Docker配置 311

附錄C Vagrant 313編程

媒體評論

「本書涵蓋了大量如何應用Docker去解決本身當下遇到的種種問題的實用建議。」 ——摘自Docker公司的Ben Firshman爲本書做的序 「充滿了四星祕訣!」 ——Chad Davis,SolidFire 「讀了這本書你會愛上Docker。」 ——José San Leandro,OSOCO 「充滿了開發 者須要的Docker技巧。」 ——Kirk Brattkus,Net Effect Technologies瀏覽器

本篇文章由一文多發平臺ArtiPub自動發佈緩存

相關文章
相關標籤/搜索