Docker實戰派——容器入門七步法( 簡體 字) | |
作者:王嘉濤,李傳龍,盧桂周 | 類別:1. -> 作業系統 -> Docker |
出版社:電子工業出版社 | 3dWoo書號: 55699 詢問書籍請說出此書號! 有庫存 NT售價: 590 元 |
出版日:4/1/2022 | |
頁數:432 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121431456 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
★★第1章 快速了解Docker /1
1.1 Docker簡介 /1 1.1.1 通過“蓋房子”來理解Docker—— 一次構建,處處運行 /1 1.1.2 Docker的適用人群 /3 1.1.3 Docker能解決什么問題 /4 1.1.4 如何快速入門 /6 1.2 Docker的基本組成 /7 1.2.1 Docker的三大組成部分 /7 1.2.2 Docker的三大核心概念 /8 1.3 入門必備基礎知識 /10 1.3.1 Linux基本操作 /10 1.3.2 Shell基礎命令 /22 1.3.3 網絡調試基礎 /27 1.3.4 Nginx配置 /34 1.3.5 區分物理機、虛擬機與容器 /41 1.4 安裝Docker /44 1.4.1 在Windows中安裝 /44 1.4.2 在macOS中安裝 /47 1.4.3 在CentOS中安裝 /49 1.4.4 在Ubuntu中安裝 /50 1.4.5 配置鏡像加速 /52 1.5 使用Docker桌面端工具 /54 1.5.1 基本功能介紹 /54 1.5.2 使用鏡像倉庫 /61 1.6 Docker常用命令1——鏡像命令 /65 1.6.1 Dockerfile配置示例 /65 1.6.2 FROM命令 /66 1.6.3 MAINTAINER命令 /66 1.6.4 RUN命令 /67 1.6.5 ADD命令和COPY命令 /69 1.6.6 ENV命令 /69 1.6.7 WORKDIR命令 /70 1.6.8 EXPOSE命令 /70 1.6.9 CMD命令和ENTRYPOINT命令 /70 1.6.10 VOLUME命令 /71 1.7 Docker常用命令2——容器命令 /72 1.7.1 clone命令 /72 1.7.2 build命令 /73 1.7.3 run命令 /73 1.7.4 share命令 /75 1.7.5 push命令 /76 1.8 本章小結 /77 ★★第2章 開始第一個Docker項目 /78 2.1 項目開發的主要階段 /78 2.1.1 一般項目開發的主要階段 /78 2.1.2 Docker項目開發的主要階段 /79 2.2 項目前期準備 /80 2.2.1 準備相關環境 /80 2.2.2 準備項目 /81 2.3 對Web項目進行容器化改造 /84 2.3.1 構建項目 /84 2.3.2 配置Nginx文件 /85 2.3.3 創建和配置Dockerfile文件 /88 2.4 構建項目鏡像 /89 2.4.1 準備啟動環境 /89 2.4.2 構建鏡像 /89 2.5 在容器中運行項目鏡像 /91 2.5.1 運行容器 /92 2.5.2 管理容器 /92 2.5.3 在瀏覽器中打開 /93 2.5.4 進程管理 /93 2.5.5 日志查看 /96 2.6 管理鏡像 /97 2.6.1 了解鏡像倉庫 /97 2.6.2 最大的鏡像倉庫——Docker Hub /98 2.6.3 把項目鏡像推送到遠程鏡像倉庫中 /98 2.7 發布項目 /102 2.7.1 準備服務器環境 /102 2.7.2 部署項目 /103 2.7.3 確定容器是否運行正常 /103 2.7.4 線上驗證 /105 2.8 本章小結 /106 ★★第3章 了解Docker的核心原理 /107 3.1 熟悉Docker架構 /107 3.2 Linux的Namespace機制 /112 3.3 Linux底層的Cgroup隔離機制 /117 3.4 容器的生命周期 /120 3.4.1 容器的生命狀態 /121 3.4.2 容器狀態之間的關系 /121 3.4.3 終止進程的SIGKILL信號和SIGTERM信號 /123 3.5 Docker的網絡與通信 /124 3.5.1 網絡驅動程序 /124 3.5.2 網橋網絡 /125 3.5.3 覆蓋網絡 /127 3.5.4 Macvlan網絡 /131 3.5.5 禁用Docker上的網絡 /133 3.6 Docker UnionFS的原理 /135 3.6.1 UnionFS的概念 /135 3.6.2 加載Docker鏡像的原理 /135 3.7 Device Mapper存儲 /138 3.7.1 鏡像分層和共享 /138 3.7.2 在Docker中配置devicemapper /139 3.7.3 配置loop-lvm模式 /140 3.7.4 配置direct-lvm模式 /142 3.7.5 最佳實踐 /146 3.8 Compose容器編排 /146 3.8.1 安裝Docker Compose /147 3.8.2 基本使用 /148 3.8.3 驗證服務是否正常 /150 3.8.4 綁定目錄與更新應用 /150 3.8.5 在后臺啟動服務 /151 3.8.6 部署分布式應用 /151 3.9 Docker源碼分析 /156 3.9.1 給初學者的建議 /156 3.9.2 學習Docker源碼的思路 /157 3.9.3 容器是如何被啟動的 /158 3.9.4 Docker Client是如何訪問Docker Server的 /165 3.9.5 Docker Engine是如何工作的 /166 3.10 本章小結 /169 ★★第4章 趁熱打鐵,Docker項目實戰 /170 4.1 前端環境準備 /170 4.1.1 Web服務器——安裝Nginx /170 4.1.2 服務器端環境——安裝Node.js /172 4.2 前端應用1——Web技術棧 /174 4.2.1 Web框架1——React實戰 /174 4.2.2 Web框架2——Vue.js實戰 /176 4.2.3 Web框架3——其他 /177 4.3 前端應用2——Node.js /180 4.3.1 客戶端渲染——CSR實戰 /180 4.3.2 服務器端渲染——SSR實戰 /180 4.4 后端環境準備 /182 4.4.1 注冊中心——ZooKeeper /182 4.4.2 消息隊列框架——Kafka /185 4.4.3 微服務框架——Dubbo /188 4.4.4 數據庫1——安裝Redis /191 4.4.5 數據庫2——安裝MySQL /192 4.4.6 數據庫3——安裝MongoDB /193 4.5 后端容器1——Java技術棧 /194 4.5.1 Java常用框架 /194 4.5.2 Java微服務容器化實戰——Spring Boot /197 4.5.3 Java技術棧改造的常見問題 /202 4.6 后端容器2——Go語言技術棧 /204 4.6.1 Go語言常用框架 /204 4.6.2 Web框架改造1——Gin實戰 /205 4.6.3 Web框架改造2——Beego實戰 /209 4.6.4 Go語言技術棧改造的常見問題 /212 4.7 后端容器3——Python技術棧 /213 4.7.1 Python常見框架 /214 4.7.2 Web框架改造——Django實戰 /215 4.7.3 微服務框架改造——Nameko實戰 /220 4.7.4 Python技術棧改造的常見問題 /223 4.8 Docker測試實戰 /224 4.8.1 Docker自動化測試 /225 4.8.2 使用Docker測試靜態網站 /227 4.8.3 使用Docker進行UI自動化測試 /230 4.9 本章小結 /237 ★★第5章 Docker的持續集成與發布 /238 5.1 準備鏡像倉庫 /238 5.1.1 倉庫選型 /238 5.1.2 原生Docker倉庫 /239 5.1.3 Harbor鏡像倉庫 /240 5.2 初始化容器配置文件 /244 5.2.1 生成Dockerfile文件 /244 5.2.2 Dockerfile文件配置的最佳實踐 /245 5.3 通過Jenkins持續集成Docker /248 5.3.1 部署Jenkins /248 5.3.2 創建Jenkins流水線 /250 5.3.3 持續集成Docker /252 5.3.4 前端緩存優化 /255 5.4 通過Jenkins發布Docker /257 5.4.1 使用Jenkins流水線部署容器 /258 5.4.2 基于Jenkins Job的多步構建 /260 5.5 部署Docker容器監控 /262 5.5.1 容器監控的原理 /262 5.5.2 cAdvisor的部署與應用 /263 5.6 本章小結 /265 ★★第6章 Docker的高級應用 /266 6.1 Docker的容器與進程 /266 6.1.1 容器是臨時的 /266 6.1.2 進程的概念 /267 6.1.3 容器與進程 /269 6.2 Docker的文件存儲與備份 /273 6.2.1 數據文件的存儲 /273 6.2.2 卷存儲 /274 6.2.3 綁定掛載 /276 6.2.4 tmpfs掛載 /277 6.2.5 數據文件的備份 /277 6.3 Docker的網絡配置 /278 6.3.1 Flannel網絡 /279 6.3.2 Weave網絡 /280 6.3.3 Open vSwitch /281 6.3.4 Calico網絡 /281 6.4 Docker的鏡像優化 /281 6.4.1 常規優化手段 /282 6.4.2 案例實戰 /287 6.5 Docker的安全策略與加固 /292 6.5.1 Docker的安全策略 /292 6.5.2 鏡像安全 /293 6.5.3 容器網絡的安全性 /294 6.5.4 網絡攻擊與防范 /294 6.6 Docker的集群管理1——Swarm /295 6.6.1 Swarm集群管理1——Docker原生管理 /295 6.6.2 Swarm集群管理2——Swarm集群搭建 /297 6.6.3 Swarm集群管理3——Swarm WordPress部署 /302 6.7 Docker的集群管理2——Kubernetes /303 6.7.1 Kubernetes容器編排1——簡介 /303 6.7.2 Kubernetes容器編排2——架構 /304 6.7.3 Kubernetes容器編排3——安裝 /306 6.7.4 Kubernetes容器編排4——基本使用 /310 6.7.5 Kubernetes應用實踐1——Kafka容器編排 /315 6.7.6 Kubernetes應用實踐2——Redis容器編排 /330 6.7.7 Kubernetes應用實踐3——部署監控系統 /334 6.8 本章小結 /337 ★★第7章 手把手打造企業級應用 /338 7.1 企業級云原生的持續交付模型——GitOps實戰 /338 7.1.1 GitOps的興起 /338 7.1.2 GitOps流水線 /340 7.1.3 GitOps最佳實踐 /341 7.1.4 GitOps與可觀測性 /341 7.1.5 GitOps的優勢 /342 7.2 企業級容器化標準 /343 7.2.1 容器化的目標 /343 7.2.2 架構選型1——服務暴露 /344 7.2.3 架構選型2——網絡選型 /348 7.2.4 架構選型3——存儲系統 /349 7.2.5 服務治理1——部署發布 /356 7.2.6 服務治理2——服務監控 /358 7.2.7 服務治理3——日志采集 /360 7.2.8 服務治理4——鏈路追蹤 /366 7.2.9 可靠性保障1——彈性部署 /368 7.2.10 可靠性保障2——集群 可靠性 /370 7.3 企業級方案1——微服務應用實踐 /372 7.3.1 應用演變過程中的痛點 /372 7.3.2 微服務架構設計 /376 7.3.3 微服務容器化的難點 /381 7.3.4 服務網格1——服務網格與微服務 /384 7.3.5 服務網格2——使用Istio方案 /386 7.3.6 常見問題及解決方案 /395 7.4 企業級方案2——打造多項目并行隔離環境 /401 7.4.1 項目并行開發的痛點 /401 7.4.2 容器化隔離環境方案 /403 7.4.3 用Docker + Jenkins解決工程化問題 /408 7.4.4 實現隔離插件 /414 7.4.5 配置Nginx Cookie識別與代理 /417 7.4.6 使用Kustomize對Kubernetes進行聲明式管理 /418 7.5 本章小結 /421 云原生時代,應用變得越來越強大,與此同時,它的復雜度也在呈指數級上升。希望實現基礎設施和流程現代化,甚至組織文化現代化的企業的最終目標是仔細選擇最適合其具體情況的云技術。在現代化的企業應用中,集群部署、隔離環境、灰度發布、服務網格及動態擴容/縮容缺一不可,而Docker 技術則是其中間的必要橋梁。 本書將圍繞Docker 技術展開介紹,通過“七步法”為讀者構建完善的學習體系。開篇先通過“蓋房子”的故事展開,讓讀者迅速了解Docker 是什么、能做什么。然后補充一些與Docker 技術相關的基礎知識,包含Linux、Shell、Nginx 及網絡調試基礎,為讀者的后續學習掃除障礙。最后通過示例幫助讀者進行Docker 容器化體驗。“授人以魚,不如授人以漁”。本書通過剖析Docker 的核心原理、持續集成與發布及企業級應用案例,一步步為讀者打造“通向企業級應用”的階梯。 本書內容詳盡,由淺入深,案例豐富。
近些年來,以Docker為核心的容器技術如日中天。在企業“降本增效”的前提下,容器方案貫穿于應用的每個核心鏈路。眾所周知,每輪新技術的興起,對于個人和公司來說,既是機會也是挑戰。因此,軟件行業的從業者的正確做法就是盡快上手,成為互聯網時代的“弄潮兒”。
本書正是致力于此,為讀者提供詳細的Docker入門知識。按照“七步法”進行學習,讀者可以輕松入門,學有所獲。 ★★為什么要寫本書 市場上不乏Docker技術相關的書籍,但其或圍繞官方基礎文檔缺乏新意,或者直入源碼讓初學者望而卻步。鮮有既滿足初學者入門需要,又結合企業實際案例的書籍。作者正是看到了這一點,另辟蹊徑,從讀者的角度出發,提出了“七步法”的概念。 何謂“七步法”?“七”既是人們最容易記住的數字,也是人類瞬間記憶的極限,本書正是立意于此。 第一步是從具象的故事開始,開門見山,降低認知門檻。 第二步則通過“第一個Docker項目”,幫助讀者快速上手。在讀者建立起體系概念后, 第三步則直切核心原理,圍繞Docker架構展開,由淺入深地講解Docker底層的隔離機制、容器的生命周期、網絡與通信、存儲原理及源碼。深入剖析,“知其然而知其所以然”。 第四步趁熱打鐵,圍繞前后端項目,從全棧角度進行項目實戰。 第五步則從Docker運維角度出發,進一步補充讀者的知識圖譜,這也是初學者最容易忽視的內容。 從第六步開始就步入了高級教程,該部分重點圍繞Docker技術最佳實踐展開,提供了容器與進程、文件存儲與備份、網絡配置、鏡像優化及安全策略與加固等內容,案例豐富,操作性強。 第七步則升華全書內容,通過云原生持續交付模型、企業級容器化標準及兩個實際的企業級方案,將本書所有內容進行串聯。 至此,七步完成。讀者可以清晰地感受每一步帶來的技術提升,穩扎穩打,從而將Docker技術融會貫通。 ★★本書的特點 本書的特點是趣味易懂、案例豐富、實操性強。 (1)趣味易懂。 本書中較多的原理,剝除了Docker官方文檔晦澀難懂的“外衣”,通過趣味故事展開。例如,通過“蓋房子”來理解Docker是什么,通過“別墅與膠囊旅館”來闡述容器與虛擬機的概念,通過“工廠和車間”來說明進程和線程,等等。 讀者無須記憶,就可輕松理解,這也正是本書想要傳達的觀點:技術并非神秘莫測,而是缺乏技巧。 (2)案例豐富。 本書第2章和第4~7章都包含大量的案例。不管是“第一個Docker項目”還是項目實戰、企業案例,都包含了大量的代碼講解。讀者完全可以按照教程逐步實現,體驗Docker編程的樂趣。 (3)實操性強。 值得一提的是,本書案例均來自實際的研發項目,為了讓讀者能夠輕松掌握,去除了容器中包含的業務邏輯,保留了Docker的核心架構,實操性強。熟練掌握本書中的案例,沉淀其所表現出來的方法論,讀者一定能夠在企業應用中靈活運用,事半功倍。 ★★本書的讀者 (1)軟件開發人員。 有了Docker,軟件開發人員可以聚焦業務邏輯,而不必再為了項目配置的差異、運行環境的不同而惆悵。 (2)軟件測試人員。 軟件測試人員每天都會面對大量的測試任務,手動執行測試用例會耗費大量的時間。在這種場景下,軟件測試人員可以考慮使用Docker進行自動化改造。 自動化的成本是首次自動化程序的編寫和維護,而收益則是解放人力、提高生產力。 (3)軟件運維人員。 對于軟件運維人員來說,Docker技術應該成為一項必修的基本功。依賴Docker提供的靈活性、封裝性及復用能力,軟件運維人員可以輕松應對系統多版本差異,高效維護多個環境。 |