第一本Docker书pdf
下載地址:網盤下載
?
?
?
內容簡介??·?·?·?·?·?·
全球第一本Docker技術圖書中文版,Docker中文社區鼎力支持!
Docker核心團隊成員權威著作,在技術圈中很有影響力。
既是第一本Docker書,也非常適合作為學習Docker的第一本入門書。
Docker是一個開源的應用容器引擎,讓開發者可以將他們的應用和依賴包打包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化。容器完全使用沙箱機制,相互之間不會有任何接口。幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,它不依賴于任何語言、框架或包裝系統。
Docker 是一個開源的應用容器引擎,開發者可以利用Docker 打包自己的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux 機器上,也可以實現虛擬化。
本書由Docker 公司前服務與支持副總裁James Turnbull 編寫,是權威的Docker 開發指南。本書會指導讀者完成Docker 的安裝、部署、管理和擴展,帶領讀者經歷從測試到生產的整個開發生命周期,讓讀者了解Docker 適用于什么場景。書中先介紹Docker 及其組件的基礎知識,然后用Docker 構建容器和服務來完成各種任務:利用Docker 為新項目建立測試環境,演示如何使用持續集成的工作流集成Docker,如何構建應用程序服務和平臺,如何使用Docker 的API,如何擴展Docker。
本書適合對Docker 或容器開發感興趣的系統管理員、運維人員和開發人員閱讀。
圖書評價:
DevOps未死,ContainerOps已到
發現Docker項目還是2013年中,我正在為構架一個Micro Service的游戲云而測試各種PaaS平臺和產品。研究CloudFoundry的過程中,被Warden子項目吸引,轉而在GitHub中尋找類似的、更容易使用和部署的容器虛擬化解決方案,最終一個Linux Container的框架Docker成為我的首選。2013年底在深圳舉行的ECUG Con(實效云時效用戶組大會)是我第一次在大型的技術會議上宣講Docker開源技術,此時它已經被Golang社區評為2013年的十大殺手級應用,也是這次會議我開始了Docker技術布道之旅。從LXC的框架到Container引擎,再到如今的SaaS平臺,Docker在開源社區的強大推動下快速向前演進,ContainerOps平臺或是Docker的下一個里程碑。
對Docker研究得越多,就越容易被它在網絡、安全方面的各種問題所困擾,忘卻了Docker使用Union FileSystem技術帶來的巨大技術變革的機會。當超越容器虛擬化引擎的標簽去看Docker時,發現它是實現應用版本管理的最佳技術選擇。比起從源代碼的某個分支或標簽起構建應用的版本,Union FileSystem更適于實現從開發到運維的版本管理。隨著OverlayFS被Linux內核3.18合并到主干,Docker也會在最新的版本中支持它(也許在你讀這本書的時候就已經支持了)。不管是AUFS還是OverlayFS,將擺脫被認為是嵌入式設備的文件格式,成為應用版本管理的技術基石。
在一次技術布道之后,有聽眾和我交流如何使用Gnome Desktop的Docker容器為團隊提供標準的Android開發環境。正值Docker在剛剛發布的1.2版本中加入了Device特性,我建議他可以使用這個特性為Desktop加入真機的調試功能。此時我才意識到開發環境甚至是桌面環境是可以通過Docker容器來實現統一的。當微軟公司和Docker深度合作的新聞震驚所有人時,才發現微軟早在多年前就布局容器虛擬化的技術。Windows成為最后一個(FreeBSD有容器引擎Jails,Solaris有容器引擎Zones)能運行容器的主流操作系統。Windows操作系統可以通過容器化技術運行多個Windows的容器,Docker引擎也終于有了打通所有平臺的機會。不管是Linux還是Windows,開發環境最終都可以被容器管理起來,開發配置管理將會變得非常簡單。
當軟件的開發環境、版本管理、交付和運行都以Docker為工具Container為基礎進行流轉時,就構成了以Container為核心的開發和運維流程,軟件的構架也因此發生改變(Micro Service的構架方式可能會因此流行)。但持續集成、持續部署和自動化運維等生產理念沒有改變,只是增加了Container的解決方案,未來必定會有基于Docker的平臺來管理整個開發和生產的流程。
DevOps未死,ContainerOps已到。
在此感謝三位譯者李兆海、劉斌和巨震的辛苦工作,把第一本Docker技術書籍帶入中國。這不僅是一本Docker技術的入門書籍,也介紹了很多Docker的最佳實踐,是學習Docker的絕佳選擇。盡管沒有參與此書的翻譯,甚為遺憾,但我會繼續努力在國內推廣Docker開源技術。
馬全一
Docker 中文社區和 docker.cn 項目創始人,Docker 開源技術布道師,資深構架師
這本書用了大量簡短可操作的程序實例介紹Docker的工作原理,幾乎頁頁都是滿滿的代碼干貨,程序員讀者可跟著這些例子自己動手玩轉Docker,這真是一部專為程序員寫的好書!
——毛文波,道里云CEO,曾創建EMC中國實驗室并擔任首席科學家,曾參與創建HP中國實驗室
這本書由曾任職于Docker公司的資深工程師編寫,由國內社區以最快的速度完成翻譯,是學習Docker的最佳入門書籍。如果你是一位希望讓自己的代碼運行在云端的程序員,現在就開始學習Docker吧!
——喻勇,Cloud Foundry社區創始人
正是因為Docker將對傳統IT技術帶來“革命性”的沖擊,所以我們看到圍繞Docker的創業項目如火如荼。IT從業人員應該及早擁抱Docker,擁抱變化。閱讀本書就是最佳入門途徑。
——陳軼飛,原百度PaaS平臺負責人,國內最早大規模應用Docker的實踐者
Docker今天已經算是明星技術了,各種技術大會都會有人談論它,越來越多的人像我一樣對這門技術著迷。Docker的發展異常迅猛,整個社區生態蓬勃向上一片繁榮。希望閱讀本書的讀者也盡快加入充滿樂趣的Docker大家庭中來。
——程顯峰,MongoDB中文社區創始人,藍海訊通COO
本書系統而又深入淺出地介紹了與Docker部署和應用相關的各個方面,體現了Docker的最新進展,并附有大量詳盡的實例。無論系統架構師、IT決策者,還是云端開發人員、系統管理員和運維人員,都能在本書中找到所需的關于Docker的內容。本書非常適合作為進入Docker領域的第一本書。
——商之狄,微軟開放技術(中國)首席項目經理
我很高興能看到第一本引進國內的Docker技術書籍——這本《The Docker Book》中文版。這本書對于迫切想了解Docker技術以及相關工具使用的技術愛好者來說,是一本值得閱讀的入門書籍。
——肖德時,InfoQ《深入淺出Docker》專欄作者
閱讀本書,就像參加一個Docker專家的面授課程,書中包含了很多非常實用的小型案例,讓你能夠循序漸進地照著學習,加深理解。James Turnbull是個寫書的高手,由淺入深地慢慢引領你理解Docker的奧秘。無論你是哪個行業的程序員,這本Docker的書絕對會讓你受益匪淺。
——蔡煜,愛立信軟件開發高級專家
對Docker本身,已經不用我再多說,只希望大家都看看這本書,并能積極嘗試Docker。縱觀IT行業歷史,大的技術變革從來不是誕生于大廠商口中的金蛋,而是一小搓愛好者的小玩意兒,而Docker正是這個路子。
——趙鵬,VisualOps 創始人
Go語言是近年來IT技術發展歷程中最偉大的事情,而Docker的出現則是云計算發展的重要里程碑。作為Go語言的殺手級應用,Docker推動了Go語言社區的發展?!禩he Docker Book》是一本Docker團隊成員撰寫的書,是一份難得的學習Docker技術的權威教材。我很高興見到中文翻譯能夠如此迅速地跟進,這是一件了不起的事情。
——許式偉,七牛云存儲CEO,《Go語言編程》作者
我非常喜歡《The Docker Book》這本書,它彌補了開源項目通常缺失的文檔部分。書中涉及從安裝入門到業務場景下的各種應用及開發。本書作者的權威性以及譯者的專業態度也保證了這本書的嚴謹性。這本書非常適合廣大的Docker愛好者閱讀。
——杜玉杰,OpenStack基金會董事
作者簡介??·?·?·?·?·?·
James Turnbull是一位技術作家,還是一名開源極客。他最近的大作是一本講述流行開源日志工具的書——The LogStash Book。James還寫了兩本關于Puppet的書,一本是Pro Puppet以,另一本是較早的Pulling Strings with Puppet: Configuration Management Made Easy。此外,James還寫了Pro Linux System Administration、Pro Nagios 2.0和Hardening Linux這三本書。
James真正的工作是Kickstarter的工程副總裁。之前,James曾擔任Docker公司服務與支持副總裁、Venmo公司工程副總裁和Puppet Labs的技術運維副總裁。James熱愛美食、美酒、閱讀、攝影,還很喜歡貓咪,但對在海灘上手牽手散步卻并不熱衷。
譯者簡介
李兆海 網名Googol Lee。使用Googol這個名字真的是因為“10的100次方”這個意思,和后來的Google公司沒有一點兒關系。多年后端程序員,早期以C、C++為主,后來轉向Python,現在以Go為生。曾寫過《Golang初探》發表于2011年2月號《程序員》。Docker早期使用者。平時喜歡亂翻書,遇到感興趣的都會研究一番。Twitter賬戶@googollee。
劉斌 具有10余年軟件開發經驗,關注后臺開發技術和各種編程語言。做過電子商務、金融、企業系統以及Android手機開發;寫過Delphi,也兼做系統管理員和DBA(現在都改叫DevOps了);既做后臺應用,也要調用前臺CSS和JavaScript,可還是不敢自稱Full Stack;今又舶來Growth Hacker,我想我要做一個Growth Engineer。
巨震 北京大學軟件工程碩士,服務器端開發者。目前就職于創業公司,使用Node.js、Golang進行服務器端開發。2013年底開始研究Docker,是Docker中文社區的活躍貢獻者,負責Docker技術文章和視頻的翻譯、校對工作。生活中喜歡美食、騎行,熱衷于PC硬件,喜愛折騰,熱愛一切計算機相關的技術,堅信技術改變世界。最崇拜的技術傳奇人物是前id Software首席程序員、現Oculus VR首席技術官John Carmack。
目錄??·?·?·?·?·?·
第1 章 簡介····································11.1 Docker 簡介·····························2
1.1.1 提供一個簡單、輕量的建模方式·························2
1.1.2 職責的邏輯分離················3
1.1.3 快速、高效的開發生命周期··3
1.1.4 鼓勵使用面向服務的架構·····3
1.2 Docker 組件·····························3
1.2.1 Docker 客戶端和服務器·······4
1.2.2 Docker 鏡像······················4
1.2.3 Registry ···························5
1.2.4 容器·······························5
1.3 我們能用Docker 做什么·············6
1.4 Docker 與配置管理····················7
1.5 Docker 的技術組件····················8
1.6 本書的內容·····························9
1.7 Docker 資源··························· 10
第2 章 安裝Docker ······················· 11
2.1 安裝Docker 的先決條件··········· 12
2.2 在Ubuntu 中安裝Docker ·········· 13
2.2.1 檢查前提條件················· 14
2.2.2 安裝Docker ···················· 16
2.2.3 Docker 與UFW ··············· 17
2.3 在Red Hat 和Red Hat 系發行版中安裝Docker ···························17
2.3.1 檢查前提條件················· 18
2.3.2 安裝Docker···················· 19
2.3.3 在Red Hat 系發行版中啟動Docker 守護進程·············· 20
2.4 在OS X 中安裝Boot2Docker ····· 21
2.4.1 在OS X 中安裝Boot2Docker ··················· 21
2.4.2 在OS X 中啟動Boot2Docker ··················· 22
2.4.3 測試Boot2Docker ············ 23
2.5 在Windows 中安裝Boot2Docker 23
2.5.1 在Windows 中安裝Boot2Docker ··················· 23
2.5.2 在Windows 中啟動Boot2Docker ··················· 24
2.5.3 測試Boot2Docker ············ 25
2.6 使用本書的Boot2Docker 示例···· 25
2.7 Docker 安裝腳本····················· 26
2.8 二進制安裝··························· 27
2.9 Docker 守護進程····················· 28
2.9.1 配置Docker 守護進程······· 28
2.9.2 檢查Docker 守護進程是否正在運行······················· 30
2.10 升級Docker ························· 31
2.11 Docker 圖形用戶界面············· 31
2.12 小結··································· 32
第3 章 Docker 入門······················ 33
3.1 確保Docker 已經就緒·············· 33
3.2 運行我們的第一個容器············ 34
3.3 使用第一個容器····················· 36
3.4 容器命名······························ 38
3.5 重新啟動已經停止的容器·········· 39
3.6 附著到容器上························ 39
3.7 創建守護式容器····················· 40
3.8 容器內部都在干些什么············ 41
3.9 查看容器內的進程·················· 42
3.10 在容器內部運行進程·············· 43
3.11 停止守護式容器···················· 44
3.12 自動重啟容器······················· 44
3.13 深入容器····························· 45
3.14 刪除容器····························· 46
3.15 小結··································· 47
第4 章 使用Docker 鏡像和倉庫······· 49
4.1 什么是Docker 鏡像················· 49
4.2 列出鏡像······························ 51
4.3 拉取鏡像······························ 54
4.4 查找鏡像······························ 56
4.5 構建鏡像······························ 57
4.5.1 創建Docker Hub 賬號······· 58
4.5.2 用Docker 的commit 命令創建鏡像······················· 59
4.5.3 用Dockerfile構建鏡像······················· 61
4.5.4 基于Dockerfile構建新鏡像····················· 64
4.5.5 指令失敗時會怎樣············ 66
4.5.6 Dockerfile 和構建緩存·· 67
4.5.7 基于構建緩存的Dockerfile模板····························· 67
4.5.8 查看新鏡像···················· 68
4.5.9 從新鏡像啟動容器··········· 69
4.5.10 Dockerfile 指令········· 72
4.6 將鏡像推送到Docker Hub········· 83
4.7 刪除鏡像······························ 88
4.8 運行自己的Docker Registry······· 90
4.8.1 從容器運行Registry ········· 90
4.8.2 測試新Registry ··············· 91
4.9 其他可選Registry 服務············· 92
4.10 小結··································· 92
第5 章 在測試中使用Docker··········· 93
5.1 使用Docker 測試靜態網站········ 93
5.1.1 Sample 網站的初始Dockerfile ················· 94
5.1.2 構建Sample 網站和Nginx鏡像····························· 96
5.1.3 從Sample 網站和Nginx 鏡像構建容器······················· 97
5.1.4 修改網站······················ 100
5.2 使用Docker 構建并測試Web應用程序·············································· 101
5.2.1 構建Sinatra 應用程序······ 101
5.2.2 創建Sinatra 容器············ 102
5.2.3 構建Redis 鏡像和容器····· 104
5.2.4 連接到Redis 容器··········· 106
5.2.5 連接Redis····················· 108
5.2.6 讓Docker 容器互連········· 110
5.2.7 使用容器連接來通信······· 114
5.3 Docker 用于持續集成·············· 116
5.3.1 構建Jenkins 和Docker服務器························· 117
5.3.2 創建新的Jenkins 作業······121
5.3.3 運行Jenkins 作業············124
5.3.4 與Jenkins 作業有關的下一步·························126
5.3.5 Jenkins 設置小結·············126
5.4 多配置的Jenkins····················126
5.4.1 創建多配置作業·············126
5.4.2 測試多配置作業·············130
5.4.3 Jenkins 多配置作業小結····132
5.5 其他選擇·····························132
5.5.1 Drone ···························132
5.5.2 Shippable ······················132
5.6 小結···································132
第6 章 使用Docker 構建服務·········133
6.1 構建第一個應用····················133
6.1.1 Jekyll 基礎鏡像···············134
6.1.2 構建Jekyll 基礎鏡像········135
6.1.3 Apache 鏡像···················135
6.1.4 構建Jekylll Apache 鏡像···136
6.1.5 啟動Jekylll 網站·············137
6.1.6 更新Jekyll 網站··············140
6.1.7 備份Jekyll 卷·················141
6.1.8 擴展Jekyll 示例網站········142
6.2 使用Docker 構建一個Java應用服務·····························143
6.2.1 WAR 文件的獲取器·········143
6.2.2 獲取WAR 文件··············144
6.2.3 Tomecat7 應用服務器·······145
6.2.4 運行WAR 文件··············146
6.2.5 基于Tomcat 應用服務器的構建服務······················147
6.3 多容器的應用?!ぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ?50
6.3.1 Node.js 鏡像··················150
6.3.2 Redis 基礎鏡像··············· 153
6.3.3 Redis 主鏡像·················· 154
6.3.4 Redis 從鏡像·················· 155
6.3.5 創建Redis 后端集群········ 156
6.3.6 創建Node 容器·············· 160
6.3.7 捕獲應用日志················ 161
6.3.8 Node 程序棧的小結········· 164
6.4 不使用SSH 管理Docker 容器··· 164
6.5 小結··································· 166
第7 章 使用Fig 編配Docker·········· 167
7.1 Fig ····································· 168
7.1.1 安裝Fig ······················· 168
7.1.2 獲取示例應用················ 169
7.1.3 fig.yml 文件··············· 172
7.1.4 運行Fig ······················· 173
7.1.5 使用Fig ······················· 175
7.1.6 Fig 小結······················· 178
7.2 Consul、服務發現和Docker ····· 178
7.2.1 構建Consul 鏡像············ 179
7.2.2 在本地測試Consul 容器··· 182
7.2.3 使用Docker 運行Consul集群···························· 184
7.2.4 啟動具有自啟動功能的Consul 節點··················· 186
7.2.5 啟動其余節點················ 188
7.2.6 配合Consul,在Docker里運行一個分布式服務···· 193
7.3 其他編配工具和組件·············· 201
7.3.1 Fleet 和etcd··················· 202
7.3.2 Kubernetes····················· 202
7.3.3 Apache Mesos················· 202
7.3.4 Helios ·························· 202
7.3.5 Centurion ······················ 203
7.3.6 Libswarm ······················203
7.4 小結···································203
第8 章 使用Docker API ················205
8.1 Docker API ···························205
8.2 初識Remote API····················206
8.3 測試Docker Remote API ··········207
8.3.1 通過API 來管理Docker鏡像····························208
8.3.2 通過API 管理Docker容器····························211
8.4 改進TProv 應用····················213
8.5 對Docker Remote API 進行認證··217
8.5.1 建立證書授權中心···········218
8.5.2 創建服務器的證書簽名請求和密鑰·························220
8.5.3 配置Docker 守護進程······222
8.5.4 創建客戶端證書和秘鑰·····223
8.5.5 配置Docker 客戶端開啟認證功能······················224
8.6 小結···································226
第9 章 獲得幫助和對Docker進行改進··························· 227
9.1 獲得幫助····························· 227
9.1.1 Docker 用戶和開發郵件列表······················ 228
9.1.2 IRC 上的Docker ············· 228
9.1.3 GitHub 上的Docker ········· 228
9.2 報告Docker 的問題················ 229
9.3 搭建構建環境······················· 229
9.3.1 安裝Docker··················· 229
9.3.2 安裝源代碼和構建工具···· 229
9.3.3 檢出源代碼··················· 230
9.3.4 貢獻文檔······················ 230
9.3.5 構建開發環境················ 231
9.3.6 運行測試······················ 232
9.3.7 在開發環境中使用Docker··· 233
9.3.8 發起pull request ············· 234
9.3.9 批準合并和維護者·········· 236
9.4 小結··································· 236
?
?
?
?
下載地址:網盤下載?
轉載于:https://www.cnblogs.com/long12365/p/9730747.html
總結
以上是生活随笔為你收集整理的第一本Docker书pdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组和算法基础
- 下一篇: 清晰度、分辨率、像素、4K、HDR的区别