內容簡介
本書從Docker運維工程師的視角系統地講解Docker容器的配置、部署與應用,共分為8個項目,包括Docker安裝、Docker快速入門、Docker網路與存儲配置、Docker容器與守護進程運維、定義和運行多容器應用程式、應用程式容器化、自動化構建與持續集成、Kubernetes部署容器化應用程式。本書重點講解Docker在應用程式開發和部署方面的實施。本書內容豐富,注重實踐性和可操作性,項目中的每個任務都有相應的操作示範,並穿插大量實例,便於讀者快速上手。
本書可作為職業院校電腦相關專業課程的教材,也可作為軟體發展人員、IT實施和運維工程師學習Docker容器技術的參考書,還可作為相關機構的培訓教材。
作者簡介
彭曉東,北京北大方正軟體職業技術學院助理院長、分管人工智慧學院,講師(社評),教授(校評),北京市高等教育學會電腦教育研究分會副理事長。畢業于北京科技大學電腦軟體與理論專業,工學碩士。曾先後在北京新科電子公司、北京摩托羅拉公司、方正數字科技公司等企業從事軟體發展和項目管理工作,專案實戰經驗豐富。曾負責軟體技術、大資料技術與應用、人工智慧技術應用、網路安全等專業的建設工作。主持完成了北京北大方正軟體職業技術學院資訊化專案建設等一系列中高職院校資訊化的專案。對資料處理與分析、人工智慧技術應用與開發、資訊安全和資訊化教學等方面有深入研究。
目錄
項目1 Docker安裝 1
任務1 1 瞭解Docker 1
任務說明 1
知識引入 2
1 1 1 什麼是Docker 2
1 1 2 Docker的優勢 2
1 1 3 Docker架構 3
1 1 4 應用程式部署方式的演變 4
任務實現 5
任務1 1 1 瞭解Docker用例 5
任務1 1 2 調查國內的Docker應用現狀 8
任務1 2 安裝Docker 10
任務說明 10
知識引入 10
1 2 1 Docker Engine 10
1 2 2 Docker Desktop 11
任務實現 12
任務1 2 1 安裝Docker Engine 12
任務1 2 2 安裝Docker Engine之後的配置 16
任務1 3 Docker命令列的使用 17
任務說明 17
知識引入 17
1 3 1 Docker的命令列介面 17
1 3 2 docker命令列表 17
任務實現 19
任務1 3 1 熟悉docker命令的基本語法 19
任務1 3 2 運行一個容器 21
項目實訓 22
項目實訓1 安裝Docker Engine 22
專案實訓2 使用docker命令 22
項目總結 22
專案2 Docker快速入門 23
任務2 1 Docker鏡像的使用 24
任務說明 24
知識引入 24
2 1 1 什麼是鏡像 24
2 1 2 鏡像的基本資訊 24
2 1 3 鏡像描述檔Dockerfile 25
2 1 4 鏡像操作命令 27
任務實現 27
任務2 1 1 掌握鏡像的基本操作 27
任務2 1 2 驗證鏡像的分層結構 30
任務2 2 Docker容器的使用 31
任務說明 31
知識引入 31
2 2 1 什麼是容器 31
2 2 2 容器的基本資訊 32
2 2 3 容器的可寫層 32
2 2 4 容器操作命令 33
2 2 5 容器的生命週期 34
任務實現 35
任務2 2 1 創建並同時啟動容器 35
任務2 2 2 掌握容器的其他常用操作 37
任務2 3 Docker註冊中心的使用 40
任務說明 40
知識引入 41
2 3 1 註冊中心 41
2 3 2 倉庫 41
任務實現 42
任務2 3 1 配置鏡像加速器 42
任務2 3 2 使用阿里雲容器鏡像服務ACR 43
任務2 3 3 自建註冊中心 47
任務2 4 構建鏡像 49
任務說明 49
知識引入 50
2 4 1 基於容器生成鏡像 50
2 4 2 Dockerfile格式 50
2 4 3 Dockerfile常用指令 51
2 4 4 區分RUN、CMD和ENTRYPOINT指令 56
2 4 5 鏡像構建工具 58
任務實現 59
任務2 4 1 基於Dockerfile構建鏡像 59
任務2 4 2 測試構建緩存 61
項目實訓 62
項目實訓1 Ubuntu鏡像操作 62
項目實訓2 Apache Web容器操作 62
專案實訓3 使用自建註冊中心 63
專案實訓4 構建在Ubuntu系統上運行的nginx鏡像 63
項目總結 63
專案3 Docker網路與存儲配置 65
任務3 1 Docker網路配置與管理 65
任務說明 65
知識引入 66
3 1 1 Docker網路概述 66
3 1 2 容器的網路模式 67
3 1 3 容器之間的通信 70
3 1 4 容器與外部網路之間的通信 70
3 1 5 容器的網路配置語法 71
3 1 6 Docker網路管理語法 73
任務實現 73
任務3 1 1 將容器連接到預設橋接網路 73
任務3 1 2 創建使用者自訂橋接網路並連接容器 76
任務3 1 3 設置埠映射以允許外部網路訪問容器 81
任務3 2 Docker存儲配置與管理 82
任務說明 82
知識引入 82
3 2 1 容器本機存放區與Docker存儲驅動 82
3 2 2 容器與資料存儲持久化 83
3 2 3 掛載類型及其選擇 84
3 2 4 Docker的卷管理命令 86
3 2 5 容器的檔案系統掛載語法 86
任務實現 87
任務3 2 1 容器使用卷 87
任務3 2 2 容器使用綁定掛載 92
項目實訓 95
專案實訓1 創建和使用使用者自訂橋接網路 95
專案實訓2 使用卷 96
專案實訓3 使用綁定掛載 96
項目實訓4 測試容器填充卷 96
項目總結 96
專案4 Docker容器與守護進程運維 97
任務4 1 Docker容器配置進階 97
任務說明 97
知識引入 98
4 1 1 容器的資源限制 98
4 1 2 容器的自動重啟 101
4 1 3 在容器中運行多個服務 102
4 1 4 容器健康檢查機制 102
4 1 5 運行時選項覆蓋Dockerfile指令 103
任務實現 105
任務4 1 1 配置容器的自動重啟策略 105
任務4 1 2 在容器中使用supervisord管理PHP和Nginx服務 107
任務4 1 3 測試容器健康檢查功能 108
任務4 2 容器監控與日誌管理 109
任務說明 109
知識引入 109
4 2 1 容器監控工具 109
4 2 2 容器日誌工具 110
4 2 3 日誌驅動 111
任務實現 112
任務4 2 1 熟悉Docker監控命令的使用 112
任務4 2 2 使用cAdvisor監控容器 113
任務4 2 3 將容器的日誌記錄到Linux日誌系統 116
任務4 2 4 使用Logspout收集所有容器的日誌 117
任務4 3 配置和管理Docker守護進程 119
任務說明 119
知識引入 119
4 3 1 Docker守護進程的啟動 119
4 3 2 Docker守護進程的配置 120
4 3 3 Docker的即時恢復功能 122
任務實現 123
任務4 3 1 從Docker守護進程獲取即時事件 123
任務4 3 2 查看Docker守護進程日誌 123
任務4 3 3 測試Docker的即時恢復功能 124
任務4 3 4 開啟Docker守護進程的遠端存取 125
任務4 4 管理Docker物件 126
任務說明 126
知識引入 126
任務實現 126
任務4 4 1 使用Docker物件的標記 126
任務4 4 2 刪除未使用的Docker物件 127
項目實訓 127
專案實訓1 容器的高級配置 127
專案實訓2 實施容器監控 128
專案實訓3 管理容器日誌 128
專案實訓4 配置和管理Docker守護進程 128
項目總結 128
專案5 定義和運行多容器應用程式 129
任務5 1 Compose入門 129
任務說明 129
知識引入 130
5 1 1 為什麼要使用Compose 130
5 1 2 Compose的工作機制 130
5 1 3 Compose的特點 132
5 1 4 Compose的應用場景 133
5 1 5 Compose的版本演變 133
5 1 6 使用Compose的基本步驟 134
任務實現 134
使用Compose部署WordPress 134
任務5 2 編寫Compose檔 138
任務說明 138
知識引入 138
5 2 1 Compose檔結構 138
5 2 2 服務定義 139
5 2 3 網路定義 144
5 2 4 卷定義 145
任務實現 146
任務5 2 1 編寫定義單個服務的Compose檔 146
任務5 2 2 編寫定義多個服務的Compose檔 147
任務5 3 使用Compose部署和管理應用程式 151
任務說明 151
知識引入 151
5 3 1 Compose命令列語法格式 151
5 3 2 Compose的常用命令 152
5 3 3 Compose的環境變數 154
5 3 4 組合使用多個Compose檔 155
任務實現 157
任務5 3 1 從原始程式碼開始構建、部署和管理應用程式 157
任務5 3 2 更改Compose應用程式以適應不同環境 161
項目實訓 163
專案實訓1 使用Compose部署Web負載均衡應用程式 163
專案實訓2 從原始程式碼開始構建、部署和管理應用程式 164
項目總結 164
專案6 應用程式容器化 165
任務6 1 構建應用程式鏡像 165
任務說明 165
知識引入 166
6 1 1 編寫Dockerfile應遵循的準則和建議 166
6 1 2 創建自己的基礎鏡像 168
6 1 3 確定應用程式鏡像包含的內容 168
6 1 4 應用程式鏡像的構建和管理 169
任務實現 169
任務6 1 1 基於scratch構建簡單的鏡像 169
任務6 1 2 製作基於VNC的Firefox鏡像 171
任務6 1 3 多階段構建鏡像 172
任務6 2 對應用程式進行容器化 173
任務說明 173
知識引入 174
6 2 1 應用程式容器化的基本步驟 174
6 2 2 部署容器化應用程式的方式 174
6 2 3 容器化過程中的應用程式碼處理 174
6 2 4 容器化應用程式的鏡像大小優化 175
6 2