《Linux虛擬化原理、方法和實戰(KVM Docker OpenStack)》從實用的角度出發,詳細介紹了Linux虛擬化相關的理論與應用知識,包括企業級KVM虛擬化實戰、企業級Docker虛擬化實戰、Docker企業命令實戰、Docker網絡原理實戰、Dockerfile企業鏡像實戰、Docker倉庫案例實戰、Docker Compose容器編排實戰、Docker Swarm集群案例實戰、OpenStack KVM構建企業級私有云。 《Linux虛擬化原理、方法和實戰(KVM Docker OpenStack)》免費提供與書中內容相關的視頻課程講解,以指導讀者深入地進行學習,詳見前言中的說明。 《Linux虛擬化原理、方法和實戰(KVM Docker OpenStack)》既可作為高等學校計算機相關專業的教材,也可作為系統管理員、網絡管理員、Linux運維工程師及網站開發、測試、設計等人員的參考用書。
本叢書融入作者十多年Linux運維經驗,盡是干貨。通過對Linux技術領域重要知識點的剖析及簡單明了的實例介紹,幫助讀者在較短的時間內掌握Linux云計算相關運維技能,成為專業的Linux高級技術人才。書中結構清晰,內容全面,由淺入深,講解很詳細,是難得的將理論 概念 實戰結合于一體的書籍,十分適合作為手邊的實戰參考書,相信能給讀者帶來新的想法和收獲。
Linux 是當今三大操作系統(Windows、macOS、Linux)之一,其創始人是林納斯·托瓦茲①。
林納斯·托瓦茲 21 歲時用 4 個月的時間首次創建了 Linux 內核,于 1991 年 10 月 5 日正式對
外發布。Linux 系統繼承了 UNIX 系統以網絡為核心的思想,是一個性能穩定的多用戶網絡操
作系統。
20 世紀 90 年代至今,互聯網飛速發展,IT 引領時代潮流,而 Linux 系統是一切 IT 的基石,
其應用場景涉及方方面面,小到個人計算機、智能手環、智能手表、智能手機等設備,大到服
務器、云計算、大數據、人工智能、數字貨幣、區塊鏈等領域。
為什么寫《Linux 虛擬化原理、方法和實戰(KVM Docker OpenStack)》這本書?這要
從我的經歷說起。我出生在貴州省一個貧困的小山村,從小經歷了砍柴、放牛、挑水、做飯,
日出而作、日落而歸的樸素生活,看到父母一輩子都生活在小山村里,沒有見過大城市,所以
從小立志要走出大山,要讓父母過上幸福的生活。正是這樣的信念讓我不斷地努力。大學畢業
至今,我在北漂的 IT 運維路上已走過了十多年:從初創小公司到國有企業、機關單位,再
到圖吧、研修網、京東商城等 IT 企業,分別擔任過 Linux 運維工程師、Linux 運維架構師、運維
經理,直到現在創辦的京峰教育培訓機構。
一路走來,很感謝生命中遇到的每一個人,是大家的幫助,讓我不斷地進步和成長,也讓
我明白了一個人活著不應該只為自己和自己的家人,還要考慮到整個社會,哪怕只能為社會貢
獻一點點價值,人生就是精彩的。
為了幫助更多的人通過技術改變自己的命運,我決定和團隊同事一起編寫這本書。雖然市
面上關于 Linux 的書籍有很多,但是很難找到一本關于企業級 KVM 虛擬化實戰、企業級 Docker
虛擬化實戰、Docker 企業命令實戰、Docker 網絡原理實戰篇、Dockerfile企業鏡像實戰、Docker
倉庫案例實戰、Docker Compose 容器編排實戰、Docker Swarm 集群案例實戰、OpenStack KVM
構建企業級私有云等內容的詳細、全面的主流技術書籍,這就是編寫本書的初衷。
① 創始人全稱是 Linus Benedict Torvalds(林納斯·本納第克特·托瓦茲)。
II Linux 虛擬化原理、方法和實戰(KVM Docker OpenStack)
配套資源
程序代碼、面試題目、學習路徑、工具手冊、簡歷模板等資料,請掃描下方二維碼下載
或者到清華大學出版社官方網站本書頁面下載。
配套資源
作者精心錄制了與 Linux 開發相關的視頻課程(3000 分鐘,144 集),便于讀者自學。掃
描封底文泉課堂刮刮卡中的二維碼進行綁定后即可觀看(注:視頻內容僅供學習參
考,與書中內容并非一一對應)。
雖然已花費大量的時間和精力核對書中的代碼和內容,但難免存在紕漏,懇請讀者批評
指正。
吳光科
2023 年 3 月
前 言
致謝
ACKNOWLEDGEMENT
感謝 Linux 之父林納斯·托瓦茲,他不僅創造了 Linux 系統,還影響了整個開源世界,也影
響了我的一生。
感謝我親愛的父母,含辛茹苦地撫養我們兄弟三人,是他們對我無微不至的照顧,讓我有
更多的精力和動力去工作,去幫助更多的人。
感謝何紅敏、周孝坤、楊政平、洛遠、譚慶松、李濤、張強、劉峰、郭大德、田文杰、柴
宗虎、張馨、佘仕星、李燊、岳曉勇及其他摯友多年來對我的信任和鼓勵。
感謝騰訊課堂所有的課程經理及平臺老師,感謝 51CTO 副總裁一休及全體工作人員對我及
京峰教育培訓機構的大力支持。
感謝京峰教育培訓機構的每位學員對我的支持和鼓勵,希望他們都學有所成,最終成為社
會的中流砥柱。感謝京峰教育首席運營官蔡正雄,感謝京峰教育培訓機構的辛老師、朱老師、
張老師、關老師、兮兮老師、小江老師、可馨老師等全體老師和助教、班長、副班長,是他們
的大力支持,讓京峰教育能夠幫助更多的學員。
最后要感謝我的愛人黃小紅,是她一直在背后默默地支持我、鼓勵我,讓我有更多的精力
和時間去完成這本書。
吳光科
2023 年 3 月
第 1 章 企業級 KVM 虛擬化實戰.1
1.1 虛擬化技術概述及簡介.1
1.2 互聯網虛擬化技術種類.2
1.3 KVM 虛擬化概念 .2
1.4 KVM 虛擬化安裝 .3
1.5 KVM 網橋配置實戰 .3
1.6 KVM 虛擬化硬盤擴容 .7
1.7 KVM 虛擬機批量克隆實戰 .8
1.8 ESXI 虛擬化技術概念 .10
1.9 XEN 虛擬化技術概念11
第 2 章 企業級 Docker 虛擬化實戰 12
2.1 虛擬化技術實現方式.14
2.2 Docker LXC 及 Cgroup 原理剖析.14
2.3 AUFS 簡介 17
2.4 Device Mapper 文件系統簡介18
2.5 OverlayFS 簡介19
2.6 為什么使用 Docker.21
2.7 Docker 鏡像、容器、倉庫 22
2.8 Docker 鏡像原理剖析 22
2.9 CentOS 7.x(7.0 )Linux Docker 平臺實戰 .25
2.10 CentOS 8.x(8.0 )Linux Docker 平臺實戰 .27
2.11 Ubuntu(16.04 )Linux Docker 平臺實戰 .29
2.12 Docker 倉庫源更新實戰 31
第 3 章 Docker 企業命令實戰. 33
3.1 Docker search 命令實戰 .33
3.2 Docker pull 命令實戰 .33
3.3 Docker images 命令實戰.34
3.4 Docker run 命令實戰 34
3.5 Docker ps 命令實戰34
3.6 Docker inspect 命令實戰 34
VI Linux 虛擬化原理、方法和實戰(KVM Docker OpenStack)
3.7 Docker exec 命令實戰 35
3.8 Docker stop|start 命令實戰 .35
3.9 Docker rm 命令實戰 .35
3.10 Docker rmi 命令實戰 36
3.11 Docker 虛擬化 30 多個命令實戰剖析 36
第 4 章 Docker 網絡原理實戰. 38
4.1 Host 模式剖析.38
4.2 Container 模式剖析.39
4.3 None 模式剖析39
4.4 Bridge 模式剖析 .39
4.5 Bridge 模式原理剖析 .40
4.6 Bridge 模式實戰一 .41
4.7 Bridge 模式實戰二 .41
4.8 Bridge 模式實戰三 .42
4.9 Bridge 模式實戰四 .43
4.10 Docker 持久化固定容器 IP44
4.11 EFK 應用背景剖析 46
4.12 EFK 架構原理深入剖析 47
4.13 Docker 部署 EFK 日志平臺 .48
4.14 基于 Docker Web 管理 Docker 容器50
第 5 章 Dockerfile 企業鏡像實戰 55
5.1 Dockerfile 語法命令詳解一 .55
5.2 Dockerfile 語法命令詳解二 .56
5.3 Dockerfile 制作規范及技巧 .61
5.4 Dockerfile 企業案例一 .61
5.5 Dockerfile 企業案例二 .62
5.6 Dockerfile 企業案例三 .63
5.7 Dockerfile 企業案例四 .64
第 6 章 Docker 倉庫案例實戰. 65
6.1 Docker 國內源實戰.65
6.2 Docker Registry 倉庫源實戰 66
6.3 Docker Harbor 倉庫源實戰 68
6.4 Docker 磁盤、內存、CPU 資源實戰一73
6.5 Docker 磁盤、內存、CPU 資源實戰二76
6.6 Docker 資源監控方案和監控實戰 81
6.7 Docker stats 監控工具 81
目錄 VII
6.8 CAdvisor 監控工具 .83
6.9 CAdvisor 部署配置 .83
6.10 構建 CAdvisor InfluxDB Grafana 平臺.85
第 7 章 Docker Compose 容器編排實戰. 89
7.1 Docker Compose 概念剖析 .89
7.2 Docker Compose 部署安裝 .90
7.3 Docker Compose 命令實戰 .90
7.4 Docker Compose 常見概念 .91
7.5 Docker Compose 語法詳解 .91
7.6 Docker Compose Nginx 案例一.99
7.7 Docker Compose Redis 案例二 .101
7.8 Docker Compose Tomcat 案例三.102
7.9 Docker Compose RocketMQ 案例四 .105
第 8 章 Docker Swarm 集群案例實戰 . 110
8.1 Swarm 概念剖析 .110
8.2 Docker Swarm 的優點 .111
8.3 Swarm 負載均衡 .112
8.4 Swarm 架構圖113
8.5 Swarm 節點及防火墻設置 .114
8.6 Docker 虛擬化案例實戰 115
8.7 Swarm 集群部署 .116
8.8 Swarm 部署 Nginx 服務 117
8.9 Swarm 服務擴容和升級 .118
8.10 Manager 和 Node 角色切換120
8.11 Swarm 數據管理之 volume.121
8.12 Swarm 數據管理之 Bind.121
8.13 Swarm 數據管理之 NFS .123
8.14 Docker Swarm 新增節點 .124
8.15 Docker Swarm 刪除節點 .127
8.16 Docker 自動化部署一 128
8.17 Docker 自動化部署二 132
第 9 章 OpenStack KVM 構建企業級私有云. 138
9.1 OpenStack 入門簡介.138
9.2 OpenStack 核心組件.139
9.3 OpenStack 準備環境.141
9.4 Hosts 及防火墻設置.141
VIII Linux 虛擬化原理、方法和實戰(KVM Docker OpenStack)
9.5 OpenStack 服務安裝.142
9.6 MQ(消息隊列)簡介.143
9.7 MQ 應用場景 144
9.8 安裝配置 RabbitMQ .146
9.9 RabbitMQ 消息測試 .148
9.10 配置 Keystone 驗證服務 149
9.11 配置 Glance 鏡像服務155
9.12 Nova 控制節點配置158
9.13 Nova 計算節點配置161
9.14 OpenStack 節點測試.165
9.15 Neutron 控制節點配置 .166
9.16 Neutron 計算節點配置 .171
9.17 OpenStack 控制節點網橋.173
9.18 控制節點配置 Dashboard.175
9.19 OpenStack GUI 配置 .191
9.20 OpenStack 核心流程.199