推荐给您最好的一本Docker书
今天上午摘選了一篇關于Docker的文章,小編感覺有必要給大家推薦一下這本書。《深入淺出Docker》,在bookauthority中最好的Docker書里排名第一,還有什么理由不選它。
?
《深入淺出Docker》在豆瓣評分8.0。
?
引用豆瓣評論:
對于我這個純小白來說,這本書無疑是我的技術導師,由淺入深,步步為營!書中例子大部分都可以運行,也經常上網找辦法,比如配置加速鏡像,這書中是不講的,還有配置swarm集群時,我用了virtualbox和docker machine來創建本地多虛機環境(電腦比較水),配置ucp 客戶端連接docker daemon的時候,我用本機節點作為服務端,docker machine虛機作為客戶端等等,即使作者講的很明白,但真動手的話麻煩還是挺多的。書中有幾處明顯錯誤,好在不難猜正確的是什么,單就翻譯質量來說,絕對杠杠的!閱讀流暢無壓力!自己的網絡是弱項 學習Docker EE時有些吃力,好在自己堅持下來了,再次感謝有這么一本書把我引上docker之路,讓我有段快樂的學習時光,學習讓我自信,學習讓我充實。 (收起)
Docker是什么
要理解Docker是什么,從一個比喻開始會比技術性解釋來得簡單,而且這個Docker的比喻非常有說服力。Docker原本是指在船只停靠港口之后將商品移進或移出的工人。箱子和物品的大小和形狀各異,而有經驗的碼頭工人能以合算的方式手工將商品裝入船只,因而他們倍受青睞(見圖1-2)。雇人搬東西并不便宜,但除此之外別無選擇。
對在軟件行業工作的人來說,這聽起來應該很熟悉。大量時間和精力被花在將奇形怪狀的軟件放置到裝滿了其他奇形怪狀軟件、大小各異的船只上,以便將其賣給其他地方的用戶或商業機構。
圖1-3展示了使用Docker概念時如何能節省時間和金錢。
?
圖1-2 標準化集裝箱前后的航運對比
在Docker出現之前,部署軟件到不同環境所需的工作量巨大。即使不是采用手工運行腳本的方式在不同機器上進行軟件配備(還是有很多人這么做),用戶也不得不全力應付那些配置管理工具,它們掌管著渴求資源且快速變化的環境的狀態。即便將這些工作封裝到虛擬機中,還是需要花費大量時間來部署這些虛擬機、等待它們啟動并管理它們所產生的額外的資源開銷。
使用Docker,配置工作從資源管理中分離了出來,而部署工作則是微不足道的:運行docker run,環境的鏡像會被拉取下來并準備運行,所消耗的資源更少并且是內含的,因此不會干擾其他環境。
讀者無須擔心容器是將被分發到Red Hat機器、Ubuntu機器還是CentOS虛擬機鏡像中,只要上面有Docker,就沒有問題。
?
圖1-3 使用Docker前后軟件交付的對比
Docker有什么好處
幾個重要的實際問題出現了:為什么要使用Docker,Docker用在什么地方?針對“為什么”的簡要答案是:只需要一點點付出,Docker就能快速為企業節省大量金錢。部分方法(肯定不是所有的)將在隨后的幾節中討論。我們已經在實際工作環境中切身體會到所有這些益處。
1.替代虛擬機(VM)
Docker可以在很多情況下替代虛擬機。如果用戶只關心應用程序,而不是操作系統,可以用Docker替代虛擬機,并將操作系統交給其他人去考慮。Docker不僅啟動速度比虛擬機快,遷移時也更為輕量,同時得益于它的分層文件系統,與其他人分享變更時更簡單、更快捷。而且,它牢牢地扎根在命令行中,非常適合腳本化。
2.軟件原型
如果想快速體驗軟件,同時避免干擾目前的設置或配備一個虛擬機的麻煩,Docker可以在幾毫秒內提供一個沙箱環境。在親身體驗之前,很難感受到這種解放的效果。
3.打包軟件
因為對Linux用戶而言,Docker鏡像實際上沒有依賴,所以非常適合用于打包軟件。用戶可以構建鏡像,并確保它可以運行在任何現代Linux機器上——就像Java一樣,但不需要JVM。
4.讓微服務架構成為可能
Docker 有助于將一個復雜系統分解成一系列可組合的部分,這讓用戶可以用更離散的方式來思考其服務。用戶可以在不影響全局的前提下重組軟件使其各部分更易于管理和可插拔。
5.網絡建模
由于可以在一臺機器上啟動數百個(甚至數千個)隔離的容器,因此對網絡進行建模輕而易舉。這對于現實世界場景的測試非常有用,而且所費無幾。
6.離線時啟用全棧生產力
因為可以將系統的所有部分捆綁在Docker容器中,所以用戶可以將其編排運行在筆記本電腦中移動辦公,即便在離線時也沒問題。
7.降低調試支出
不同團隊之間關于軟件交付的復雜談判在業內司空見慣。我們親身經歷過不計其數的這類討論:失效的庫、有問題的依賴、更新被錯誤實施或是執行順序有誤,甚至可能根本沒執行以及無法重現的錯誤等。估計讀者也遇到過。Docker讓用戶可以清晰地說明(即便是腳本的形式)在一個屬性已知的系統上調試問題的步驟,錯誤和環境重現變得更簡單,而且通常與所提供的宿主機環境是分離的。
8.文檔化軟件依賴及接觸點
通過使用結構化方式構建鏡像,為遷移到不同環境做好準備,Docker 強制用戶從一個基本出發點開始明確地記錄軟件依賴。即使用戶不打算在所有地方都使用Docker,這種對文檔記錄的需要也有助于在其他地方安裝軟件。
9.啟用持續交付
持續交付(continuous delivery,CD)是一個基于流水線的軟件交付范型,該流水線通過一個自動化(或半自動化)流程在每次變動時重新構建系統然后交付到生產環境中。
因為用戶可以更準確地控制構建環境的狀態,Docker 構建比傳統軟件構建方法更具有可重現性和可復制性。使持續交付的實現變得更容易。通過實現一個以Docker為中心的可重現的構建過程,標準的持續交付技術,如藍/綠部署(blue/green deployment,在生產環境中維護“生產”和“最新”部署)和鳳凰部署(phoenix deployment,每次發布時都重新構建整個系統)變得很簡單。
現在,讀者對Docker如何能夠提供幫助有了一定了解。在進入一個真實示例之前,讓我們來了解一下幾個核心概念。
為什么要閱讀本書,為什么要關注Docker
如今Docker無處不在,這是不爭的事實。開發人員都很喜歡它,運維工程師也需要它。他們都需要深入了解如何在關鍵業務環境中構建和維護符合生產級別要求的容器化應用,本書將幫助讀者掌握它。
?
Docker僅能供開發人員所用嗎
對于認為Docker是開發人員專屬工具的人來說,恐怕要準備好顛覆自己的認知了。
容器化應用需要有地方運行,也需要有人來管理。如果認為只是開發人員來管理它,那就大錯特錯了,事實上運維需要構建和運行高性能、生產級別的Docker基礎架構。對于專注于運維工作卻尚未掌握Docker的朋友來說,日子恐怕不太好過。不過不必焦慮,本書將幫你掌握Docker。
詳細目錄
第 一部分 Docker概覽?
第 1章 容器發展之路 2?
1.1 落后的舊時代 2?
1.2 你好,VMware! 2?
1.3 虛擬機的不足 3?
1.4 你好,容器! 3?
1.5 Linux容器 3?
1.6 你好,Docker! 4?
1.7 Windows容器 4?
1.8 Windows容器vs Linux容器 4?
1.9 Mac容器現狀 5?
1.10 Kubernetes 5?
1.11 本章小結 6?
第 2章 走進Docker 7?
2.1 Docker—簡介 7?
2.2 Docker公司 7?
2.3 Docker運行時與編排引擎 8?
2.4 Docker開源項目(Moby) 9?
2.5 容器生態 10?
2.6 開放容器計劃 11?
2.7 本章小結 12?
第3章 Docker安裝 13?
3.1 Windows版Docker(DfW) 13?
3.2 Mac版Docker(DfM) 17?
3.3 在Linux上安裝Docker 19?
3.4 在Windows Server 2016上安裝Docker 21?
3.5 Docker引擎(Engine)升級 22?
3.5.1 在Ubuntu 16.04上升級Docker CE 23?
3.5.2 在Windows Server 2016上升級Docker EE 24?
3.6 Docker存儲驅動的選擇 25?
3.6.1 Device Mapper配置 26?
3.6.2 讓Docker自動設置direct-lvm 26?
3.6.3 手動配置Device Mapper的direct-lvm 28?
3.7 本章小結 28?
第4章 縱觀Docker 29?
4.1 運維視角 29?
4.1.1 鏡像 30?
4.1.2 容器 31?
4.1.3 連接到運行中的容器 34?
4.2 開發視角 35?
4.3 本章小結 38?
第二部分 Docker技術?
第5章 Docker引擎 40?
5.1 Docker引擎—簡介 40?
5.2 Docker引擎—詳解 41?
5.2.1 擺脫LXC 41?
5.2.2 摒棄大而全的Docker daemon 42?
5.2.3 開放容器計劃(OCI)的影響 43?
5.2.4 runc 43?
5.2.5 containerd 43?
5.2.6 啟動一個新的容器(示例) 44?
5.2.7 該模型的顯著優勢 45?
5.2.8 shim 45?
5.2.9 在Linux中的實現 46?
5.2.10 daemon的作用 46?
5.3 本章小結 46?
第6章 Docker鏡像 48?
6.1 Docker鏡像—簡介 48?
6.2 Docker鏡像—詳解 48?
6.2.1 鏡像和容器 49?
6.2.2 鏡像通常比較小 49?
6.2.3 拉取鏡像 49?
6.2.4 鏡像命名 51?
6.2.5 鏡像倉庫服務 51?
6.2.6 鏡像命名和標簽 52?
6.2.7 為鏡像打多個標簽 54?
6.2.8 過濾docker image ls的輸出內容 55?
6.2.9 通過CLI方式搜索Docker Hub 56?
6.2.10 鏡像和分層 57?
6.2.11 共享鏡像層 60?
6.2.12 根據摘要拉取鏡像 61?
6.2.13 鏡像散列值(摘要) 63?
6.2.14 多層架構的鏡像 63?
6.2.15 刪除鏡像 65?
6.3 鏡像—命令 67?
6.4 本章小結 67?
第7章 Docker容器 68?
7.1 Docker容器—簡介 68?
7.2 Docker容器—詳解 69?
7.2.1 容器vs虛擬機 69?
7.2.2 虛擬機的額外開銷 71?
7.2.3 運行的容器 71?
7.2.4 檢查Docker daemon 71?
7.2.5 啟動一個簡單容器 72?
7.2.6 容器進程 74?
7.2.7 容器生命周期 75?
7.2.8 優雅地停止容器 78?
7.2.9 利用重啟策略進行容器的自我修復 78?
7.2.10 Web服務器示例 80?
7.2.11 查看容器詳情 82?
7.2.12 快速清理 82?
7.3 容器—命令 83?
7.4 本章小結 84?
第8章 應用的容器化 85?
8.1 應用的容器化—簡介 85?
8.2 應用的容器化—詳解 86?
8.2.1 單體應用容器化 86?
8.2.2 生產環境中的多階段構建 95?
8.2.3 最佳實踐 98?
8.3 應用的容器化—命令 100?
8.4 本章小結 101?
第9章 使用Docker Compose部署應用 102?
9.1 使用Docker Compose部署應用—簡介 102?
9.2 使用Docker Compose部署應用—詳解 103?
9.2.1 Docker Compose的背景 103?
9.2.2 安裝Docker Compose 103?
9.2.3 Compose文件 105?
9.2.4 使用Docker Compose部署應用 107?
9.2.5 使用Docker Compose管理應用 110?
9.3 使用Docker Compose部署應用—命令 115?
9.4 本章小結 116?
第 10章 Docker Swarm 117?
10.1 Docker Swarm—簡介 117?
10.2 Docker Swarm—詳解 118?
10.2.1 Swarm的初步介紹 118?
10.2.2 搭建安全Swarm集群 119?
10.2.3 Swarm服務 125?
10.2.4 故障排除 133?
10.3 Docker Swarm—命令 134?
10.4 本章小結 135?
第 11章 Docker網絡 136?
11.1 Docker網絡—簡介 136?
11.2 Docker網絡—詳解 137?
11.2.1 基礎理論 137?
11.2.2 單機橋接網絡 140?
11.2.3 多機覆蓋網絡 146?
11.2.4 接入現有網絡 146?
11.2.5 服務發現 152?
11.2.6 Ingress網絡 153?
11.3 Docker網絡—命令 156?
11.4 本章小結 156?
第 12章 Docker覆蓋網絡 157?
12.1 Docker覆蓋網絡—簡介 157?
12.2 Docker覆蓋網絡—詳解 157?
12.2.1 在Swarm模式下構建并測試Docker覆蓋網絡 158?
12.2.2 工作原理 164?
12.3 Docker覆蓋網絡—命令 168?
12.4 本章小結 168?
第 13章 卷與持久化數據 169?
13.1 卷與持久化數據—簡介 169?
13.2 卷與持久化數據—詳解 169?
13.2.1 容器與非持久數據 170?
13.2.2 容器與持久化數據 170?
13.2.3 在集群節點間共享存儲 175?
13.3 卷與持久化數據—命令 176?
13.4 本章小結 176?
第 14章 使用Docker Stack部署應用 177?
14.1 使用Docker Stack部署應用—簡介 177?
14.2 使用Docker Stack部署應用—詳解 178?
14.2.1 簡單應用 178?
14.2.2 深入分析Stack文件 180?
14.2.3 部署應用 186?
14.2.4 管理應用 191?
14.3 使用Docker Stack部署應用—命令 193?
14.4 本章小結 194?
第 15章 Docker安全 195?
15.1 Docker安全—簡介 195?
15.2 Docker安全—詳解 196?
15.2.1 Linux安全技術 197?
15.2.2 Docker平臺安全技術 201?
15.3 本章小結 212?
第 16章 企業版工具 213?
16.1 企業版工具—簡介 213?
16.2 企業版工具—詳解 214?
16.2.1 Docker EE引擎 214?
16.2.2 Docker通用控制平面(UCP) 216?
16.2.3 Docker可信鏡像倉庫服務(DTR) 227?
16.3 本章小結 233?
第 17章 企業級特性 234?
17.1 企業級特性—簡介 234?
17.2 企業級特性—詳解 234?
17.2.1 基于角色的權限控制(RBAC) 235?
17.2.2 集成活動目錄 239?
17.2.3 Docker內容信任機制(DCT) 241?
17.2.4 配置Docker可信鏡像倉庫服務(DTR) 243?
17.2.5 使用Docker可信鏡像倉庫服務 244?
17.2.6 提升鏡像 247?
17.2.7 HTTP路由網格(HRM) 250?
17.3 本章小結 253?
附錄A 安全客戶端與daemon的通信 255?
附錄B DCA考試 265?
附錄C 延伸 270
總結
以上是生活随笔為你收集整理的推荐给您最好的一本Docker书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建一个3D角色模型很难?3dmax和m
- 下一篇: mysql-5.7.17-winx64安