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