Docker開發指南pdf

圖書網
9788
文章
1286
評論
2018年8月30日08:59:40 評論 295閱讀13分52秒

Docker容器給軟件的開發、發布和運行提供了簡單、快速和可靠的方法,尤其是在動態和分布式的環境中。通過這本實戰指南,你將學習到為什么容器如此重要,Docker能帶來哪些好處,以及怎樣把它變成開發流程的一部分。

本書適合軟件開發者、運維工程師和系統管理員,尤其適合對DevOps模式感興趣的讀者。作者將帶領你從基礎知識出發,直到了解如何在多主機系統上運行數十個擁有聯網和調度能力的容器系統,重在讓你掌握使用Docker來開發、測試以及部署Web應用。

- 從構建和部署簡單Web應用開始了解Docker

- 使用持續部署技術,把應用一天多次推送到生產環境

- 學習各種不同的選項和技術,實現多容器的日志記錄和監控

- 剖析聯網和服務發現:容器之間如何尋找對方,以及怎樣把它們連接起來

- 通過運用容器的編排和集群功能,解決負載均衡、擴展、故障切換以及調度的問題

- 遵守縱深防御和zui小權限的原則,確保系統安全

- 利用容器構建微服務架構

Docker開發指南 內容簡介

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

Docker開發指南 目錄

第一部分 背景與基礎

第1章 何謂容器,為何需要它

1.1 容器與虛擬機的比較

1.2 Docker與容器

1.3 Docker的歷史

1.4 插件與基礎設施

1.5 64位Linux

第2章 安裝

2.1 在Linux上安裝Docker

2.1.1 將SELinux置于寬容模式下運行

2.1.2 不使用sudo命令執行Docker

2.2 在Mac OS及Windows上安裝Docker

2.3 快速確認

第3章 邁出第一步

3.1 運行第一個鏡像

3.2 基本命令

3.3 通過Dockerfile創建鏡像

3.4 使用寄存服務

3.5 使用Redis官方鏡像

3.6 總結

第4章 Docker基本概念

4.1 Docker系統架構

4.1.1 底層技術

4.1.2 周邊技術

4.1.3 Docker托管

4.2 鏡像是如何生成的

4.2.1 構建環境的上下文

4.2.2 鏡像層

4.2.3 緩存

4.2.4 基礎鏡像

4.2.5 Dockerfile指令

4.3 使容器與世界相連

4.4 容器互聯

4.5 利用數據卷和數據容器管理數據

4.5.1 共享數據

4.5.2 數據容器

4.6 Docker常用命令

4.6.1 run命令

4.6.2 容器管理

4.6.3 Docker信息

4.6.4 容器信息

4.6.5 鏡像管理

4.6.6 使用寄存服務器

4.7 總結

第二部分 Docker與軟件生命周期

第5章 在開發中應用Docker

5.1 說聲“Hello World!”

5.2 通過Compose實現自動化

5.3 總結

第6章 創建一個簡單的Web應用

6.1 創建一個基本網頁

6.2 利用現有鏡像

6.3 實現緩存功能

6.4 微服務

6.5 總結

第7章 鏡像分發

7.1 鏡像及鏡像庫的命名方式

7.2 Docker Hub

7.3 自動構建

7.4 私有分發

7.4.1 運行自己的寄存服務

7.4.2 商業寄存服務

7.5 縮減鏡像大小

7.6 鏡像出處

7.7 總結

第8章 Docker持續集成與測試

8.1 為identidock添加單元測試

8.2 創建Jenkins容器

8.3 推送鏡像

8.3.1 給鏡像正確的標簽

8.3.2 準生產及生產環境

8.3.3 鏡像數量激增的問題

8.3.4 使用Docker部署Jenkins slaves

8.4 備份Jenkins數據

8.5 持續集成的托管解決方案

8.6 測試與微服務

8.7 總結

第9章 部署容器

9.1 通過Docker Machine配置資源

9.2 使用代理

9.3 執行選項

9.3.1 shell腳本

9.3.2 使用進程管理器(或用systemd控制所有進程)

9.3.3 使用配置管理工具

9.4 主機配置

9.4.1 選擇操作系統

9.4.2 選擇存儲驅動程序

9.5 專門的托管方案

9.5.1 Triton

9.5.2 谷歌容器引擎

9.5.3 亞馬遜EC2容器服務

9.5.4 Giant Swarm

9.6 持久性數據和生產環境容器

9.7 分享秘密信息

9.7.1 在鏡像中保存秘密信息

9.7.2 通過環境變量傳遞密鑰

9.7.3 通過數據卷傳遞密鑰

9.7.4 使用鍵值存儲

9.8 網絡連接

9.9 生產環境的寄存服務

9.10 持續部署/交付

9.11 總結

第10章 日志記錄和監控

10.1 日志記錄

10.1.1 Docker默認的日志記錄

10.1.2 日志匯總

10.1.3 使用ELK進行日志記錄

10.1.4 通過syslog實現日志管理

10.1.5 從文件抓取日志

10.2 監控和警報

10.2.1 使用Docker工具進行監測

10.2.2 cAdvisor

10.2.3 集群解決方案

10.3 商用的監聽及日志記錄解決方案

10.4 總結

第三部分 工具和技術

第11章 聯網和服務發現

11.1 大使容器

11.2 服務發現

11.2.1 etcd

11.2.2 SkyDNS

11.2.3 Consul

11.2.4 服務注冊

11.2.5 其他解決方案

11.3 聯網選項

11.3.1 網橋模式

11.3.2 主機模式

11.3.3 容器模式

11.3.4 未聯網模式

11.4 全新的Docker聯網功能

11.5 網絡解決方案

11.5.1 Overlay

11.5.2 Weave

11.5.3 Flannel

11.5.4 Calico項目

11.6 總結

第12章 編排、集群和管理

12.1 集群和編排工具

12.1.1 Swarm

12.1.2 fleet

12.1.3 Kubernetes

12.1.4 Mesos和Marathon

12.2 容器管理平臺

12.2.1 Rancher

12.2.2 Clocker

12.2.3 Tutum

12.3 總結

第13章 容器安全與限制容器

13.1 需要考慮的事項

13.2 縱深防御

13.3 如何保護identidock

13.4 以主機隔離容器

13.5 進行更新

13.6 鏡像出處

13.6.1 Docker摘要

13.6.2 Docker的內容信任機制

13.6.3 可復制及可信任的Dockerfile

13.7 安全建議

13.7.1 設置用戶

13.7.2 限制容器聯網

13.7.3 刪除setuid和setgid的二進制文件

13.7.4 限制內存使用

13.7.5 限制CPU使用

13.7.6 限制重新啟動

13.7.7 限制文件系統

13.7.8 限制內核能力

13.7.9 應用資源限制

13.8 運行加固內核

13.9 Linux安全模塊

13.9.1 SELinux

13.9.2 AppArmor

13.10 審核

13.11 事件響應

13.12 未來特性

13.13 總結

作者簡介

關于封面

附錄

Docker開發指南 精彩文摘

容器從根本上改變了人們開發、發布以及運行軟件的方式。軟件開發者可以在本地構建軟件,因為他們知道軟件能夠在任何主機環境下運行,無論是IT 部門的機房、用戶的筆記本電腦,還是云端集群,而且運行時并無差異。運維工程師只需專注于維護網絡和資源,保證正常運行時間,減少了花在配置環境及解決系統依賴關系上的時間。從規模很小的創業公司,到規模龐大的企業,容器的使用率和理解程度正以驚人的速度提升。可以預見,在未來幾年,開發者和運維工程師將以不同形式廣泛使用容器技術。

容器是對應用程序及其依賴關系的封裝。乍一看容器只是個輕量級的虛擬機,它和虛擬機一樣擁有一個被隔離的操作系統實例,用來運行應用程序。

但容器擁有一些優點,使它能實現一些傳統虛擬機很難實現甚至無法實現的用例。

? 容器能與主機的操作系統共享資源,因而它的效率高出一個數量級。啟動和停止容器均只需一瞬間。相比在主機上直接運行程序,容器的性能損耗非常低,甚至是零損耗。

? 容器具有可移植性,這極有可能徹底解決由于運行環境的些許改變而導致的問題,甚至有可能徹底終止開發者的抱怨:“可是程序在我的計算機上能正常工作!”

? 容器是輕量的,這意味著開發者能同時運行數十個容器,并能模擬分布式系統在真實運行環境下的情況。運維工程師在一臺主機上能運行的容器數量,遠遠超過僅使用虛擬機時。

? 對于最終用戶及開發者而言,容器的優勢不僅僅體現在云端部署。用戶可以下載并執行復雜的應用程序,而無需花費大量時間在配置和安裝的問題上,也無需擔心對系統本身的改動。另一方面,應用程序的開發者不用再操心用戶環境的差異,以及依賴關系是否滿足。

更重要的是,虛擬機和容器的根本目標不盡相同。虛擬機的目的是要完整地模擬另一個環境,而容器的目的則是使應用程序能夠移植,并把所有依賴關系包含進去。

1.1 容器與虛擬機的比較

雖然容器和虛擬機乍一看很相似,但它們之間有著重大的差異,用圖就能輕松解釋這些差異。

圖1-1 中有三個應用程序,分別運行在主機的不同虛擬機上。這里需要一個虛擬機管理程序( hypervisor)1 來創建及運行虛擬機,控制訪問底層操作系統及硬件的權限,以及在必要時解析系統調用接口。每個虛擬機需要一個完整的操作系統、用來運行的應用程序以及所需的程序庫。

相比之下,圖1-2 展示了上述三個應用程序在容器化系統中運行的情況。與虛擬機不同,主機的內核2 與容器共享,這意味著容器只能運行與主機一樣的內核。應用程序Y 和Z 使用相同的程序庫,該程序庫可以被不同的應用程序同時使用,只需一份,不用復制。容器引擎(container engine)負責啟動及停止容器,與虛擬機管理程序差不多。但是,容器中執行的進程與主機自身的進程是等價的,因此沒有類似虛擬機管理程序執行所帶來的損耗。

虛擬機與容器都可以把主機上的應用程序隔離開來。虛擬技術中的虛擬機管理程序能帶來更高一級的隔離性能,是已被公認且千錘百煉的技術。容器技術相對較新,很多公司在取得充分可靠的運行記錄前,無法完全信任容器的隔離性能。因此,不難發現有些系統同時采用這兩種技術,將容器運行在虛擬機內,這樣就能魚與熊掌兼得。

圖1-1:運行在同一臺主機上的3 個虛擬機

注1: 圖中表達的是第二類虛擬機管理程序,如Virtualbox 和VMWare Workstation,它運行在操作系統之上。也有第一類虛擬機管理程序,如Xen,它直接運行在裸機上。

注2:內核是操作系統的核心部分,負責為應用程序提供關于內存、CPU 以及設備訪問的基本系統功能。一個完整的操作系統包括內核和各種系統程序,如啟動(init)系統、編譯器和窗口管理器。

圖書網:Docker開發指南pdf

恭喜,此資源為免費資源,請先
聲明:本站所有資源收集于互聯網,只做學習和交流使用,版權歸著作人和出版社所有,請在下載后24小時之內自覺刪除,若作商業用途,請購買正版,由于未及時購買和付費發生的侵權行為,與本站無關。本站發布的內容若侵犯到您的權益,請聯系站長刪除,我們將及時處理!
繼續閱讀
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
新時期的Node.js入門epub 程序設計

新時期的Node.js入門epub

適讀人群 :適合未接觸過Node的讀者以及在校的學生閱讀,也適合作為高等院校和培訓學校相關專業的師生教學參考 從零開始學習開發完整可用的項目,掌握語言細節并獲得實際經驗 以實際應用...
深度學習實踐 計算機視覺epub 程序設計

深度學習實踐 計算機視覺epub

深度學習實踐 計算機視覺 作者:繆鵬 深度學習實踐 計算機視覺 出版社: 清華大學出版社 深度學習實踐 計算機視覺 內容簡介 本書主要介紹了深度學習在計算機視覺方面的應用及工程實踐,以Python 3...
趣味數學及編程拓展epub 程序設計

趣味數學及編程拓展epub

趣味數學及編程拓展 作者:楊克昌 趣味數學及編程拓展 出版社: 清華大學出版社 趣味數學及編程拓展 內容簡介 本書開創趣味數學與程序設計的交匯融合。書中精選并提出各類趣味數學問題,突出趣味性與吸引力,...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: