更多書籍文章點擊進入>> CiCi島php
電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支持正版,喜歡的請購買正版書籍html
權威做者:具備十多年虛擬化研究經驗,國內首批研究Docker容器技術的專家,Docker開源項目貢獻者 快速入門:透過簡單的理論講解,帶你進入Docker的世界 步驟詳細:手把手教你配置方法,爲你量身定製本身的Docker 內容豐富:揭露鏡像製做過程,教你搭建鏡像倉庫git
本書介紹了Docker容器技術的背景和基本原理,以及如何定製化符合用戶要求的Docker Daemon,增長安全性、提升效率。.鏡像提供了千差萬別的服務,每個鏡像都是要知足用戶的某種需求。如何製做出體積小、安全性高、可配置性強的鏡像是困擾不少開發者的問題,書中詳細介紹了相關解決方案。本書的最後還介紹了各類流行的開源項目,讓讀者瞭解Docker生態圈。github
廖煜,電子科技大學計算機碩士,Ghostcloud聯合創始人。從事虛擬化技術研究十多年,擁有豐富的虛擬化、雲計算及存儲技術經驗。國內第一批研究Docker容器技術的專家,Docker開源項目貢獻者。前後供職於Intel、Symantec、EMC等IT公司。從2006年開始,在Intel MCP實驗室研究虛擬化技術。在Symantec期間,做爲核心成員研發了Symantec第一款虛擬化產品VxVI;並負責研發Symantec第一款存儲一體機N8000系列。在EMC期間,主要從事VNX系列產品的研發測試工做。 晏東,Ghostcloud創始人,超過20年編程經驗,熟悉多種編程語言,全棧工程師。國內最先一批Go語言使用者,Docker項目Committer,Beego項目Committer, 阿里雲社區Docker技術專家。曾任索貝數碼分佈式文件系統及高可用中間件資深架構師,曾任Symantec/Veritas技術負責人,擁有超過12年分佈式系統行業經驗。docker
目 錄
第1篇 Docker基礎知識介紹
第1章 雲計算簡介 2
1.1 虛擬化技術的分類和歷史 3
1.1.1 硬件級虛擬化歷史 3
1.1.2 操做系統級虛擬化歷史 4
1.2 雲計算服務模式 4
1.3 Docker介紹 5
1.3.1 Docker主要解決什麼問題 6
1.3.2 Docker的歷史 6
1.3.3 Docker是什麼 6
1.4 Linux快速入門 7
1.4.1 選取什麼發行版本 7
1.4.2 使用圖形界面仍是命令行界面 8
1.4.3 英文仍是中文 8
1.4.4 安裝Ubuntu 14.04 8
1.4.5 Linux經常使用工具 11
1.4.6 啓用root 用戶 12
1.4.7 使用vim 12
1.4.8 配置網絡 13
1.4.9 啓用SSH Server 13
1.4.10 經過客戶端遠程鏈接Linux主機 14
1.4.11 免密碼登陸Linux主機 15
1.4.12 安裝軟件 15
1.4.13 公有云主機快速入門 16
1.4.14 購買雲主機 17
1.4.15 鏈接到雲主機 19
1.5 習題 21
第2章 Docker的安裝 22
2.1 在Ubuntu下安裝Docker 22
2.1.1 前置條件 22
2.1.2 更新apt源 23
2.1.3 Ubuntu 14.04特殊處理 24
2.1.4 正式安裝 24
2.2 在CentOS下安裝 26
2.2.1 前置條件 26
2.2.2 更新yum 26
2.2.3 添加倉庫 26
2.2.4 正式安裝 26
2.3 經過Ghostcloud進行安裝 27
2.3.1 註冊Ghostcloud帳號 28
2.3.2 接入新主機 28
2.3.3 獲取安裝腳本 28
2.3.4 驗證Docker安裝是否成功 30
2.3.5 運行第一個容器 30
2.4 經過官方的安裝腳本安裝 31
2.5 在非Linux系統下安裝Docker 32
2.6 習題 32
第3章 使用Docker 33
3.1 運行hello-world 33
3.2 容器和鏡像 35
3.2.1 什麼是容器 35
3.2.2 什麼是鏡像 35
3.2.3 容器和鏡像的關係 36
3.3 Docker入門操做 36
3.3.1 查看Docker基本信息 36
3.3.2 下載第一個基礎鏡像 37
3.3.3 運行一個含shell終端的容器 38
3.3.4 查看容器運行 38
3.3.5 運行長時間容器 38
3.3.6 查看全部容器 39
3.4 習題 40
第2篇 Docker的基本使用
第4章 Docker深刻解析 42
4.1 Docker的架構 42
4.2 Docker如何工做 43
4.2.1 Docker Image工做方式 43
4.2.2 Docker Registry工做方式 44
4.2.3 容器工做方式 44
4.2.4 底層的技術 45
4.3 Docker Client和Daemon 46
4.4 經過容器運行Web應用 47
4.4.1 使用國內倉庫 48
4.4.2 拉取apache-php鏡像 48
4.4.3 運行鏡像 48
4.4.4 網頁訪問 48
4.4.5 修改頁面內容 49
4.4.6 持久化容器 50
4.5 鏡像製做 50
4.5.1 查看本機鏡像 50
4.5.2 獲取鏡像的三種方式 51
4.5.3 查找DockerHub鏡像 51
4.5.4 查找其餘倉庫鏡像 52
4.5.5 push鏡像 54
4.5.6 根據Dockerfile編譯鏡像 55
4.5.7 刪除鏡像 56
4.6 docker run命令 56
4.6.1 docker run的語法格式 56
4.6.2 先後臺運行 57
4.6.3 容器的標識 57
4.6.4 PID設置 58
4.6.5 UTS(--uts)設置 58
4.6.6 IPC(--ipc)設置 59
4.6.7 網絡設置 59
4.6.8 重啓策略(--restart) 60
4.6.9 Clean up (--rm) 61
4.6.10 CGroups控制 61
4.6.11 特權模式和Capabilities 61
4.6.12 日誌驅動(--log-driver) 62
4.6.13 覆蓋image的默認參數 62
4.7 習題 63
第5章 容器的網絡 64
5.1 容器自帶網絡 64
5.2 網絡詳情 65
5.3 用戶自定義網絡 67
5.3.1 橋接網絡 67
5.3.2 Overlay網絡 68
5.4 習題 71
第6章 容器的數據 72
6.1 數據卷 72
6.1.1 建立一個數據卷 72
6.1.2 映射一個外部卷 73
6.2 使用數據型容器 73
6.3 備份、還原和遷移數據卷 73
6.4 容器和代碼進行關聯 74
6.5 習題 74
第7章 鏡像倉庫 75
7.1 倉庫相關的Docker命令 75
7.1.1 登陸 75
7.1.2 查找 76
7.1.3 拉取 76
7.1.4 提交 76
7.2 習題 76
第3篇 Docker的高級使用
第8章 鏡像和容器的存儲結構 78
8.1 鏡像、容器和存儲驅動的關係 78
8.1.1 鏡像和鏡像層 78
8.1.2 鏡像存儲方式 80
8.1.3 一個遷移例子 81
8.1.4 容器和容器層 82
8.1.5 寫時複製策略 83
8.1.6 使用共享技術減少鏡像體積 83
8.1.7 使用複製技術加快容器啓動時間 86
8.1.8 數據卷和存儲驅動 90
8.2 如何選擇存儲驅動 90
8.2.1 存儲設備和存儲驅動 92
8.2.2 如何存儲驅動 92
8.3 AUFS存儲驅動 94
8.3.1 AUFS中的鏡像 94
8.3.2 AUFS中的容器讀寫 95
8.3.3 在AUFS中刪除文件 95
8.3.4 如何配置AUFS 96
8.3.5 鏡像的存儲方式 96
8.3.6 容器的存儲方式 97
8.3.7 AUFS的性能 99
8.4 Devicemapper存儲驅動 99
8.4.1 Devicemapper中的鏡像 100
8.4.2 Devicemapper中的讀操做 101
8.4.3 Devicemapper中的寫操做 102
8.4.4 如何配置Devicemapper 103
8.4.5 在生產環境中配置direct-lvm模式 104
8.4.6 Devicemapper的存儲方式 107
8.4.7 動態擴容loop-lvm模式下的thin pool 108
8.4.8 動態擴容direct-lvm模式下的thin pool 110
8.4.9 Devicemapper的性能 110
8.5 Btrfs存儲驅動 111
8.5.1 Btrfs中的鏡像 112
8.5.2 Btrfs的存儲方式 114
8.5.3 Btrfs中的讀寫 114
8.5.4 如何配置Btrfs 115
8.5.5 Btrfs的性能 116
8.6 ZFS存儲驅動 117
8.6.1 ZFS中的鏡像 117
8.6.2 ZFS中的讀寫 118
8.6.3 如何配置ZFS 119
8.6.4 ZFS的性能 121
8.7 Overlay存儲驅動 122
8.7.1 Overlay中的鏡像 122
8.7.2 Overlay2中的鏡像 125
8.7.3 Overlay中的讀寫 127
8.7.4 如何配置Overlay/Overlay2 127
8.7.5 Overlay的性能 128
8.8 習題 129
第9章 定製Docker Daemon 130
9.1 修改Docker Daemon的三種方式 130
9.1.1 直接啓動Docker Daemon 132
9.1.2 修改Docker Daemon啓動項 132
9.1.3 自定義Docker Daemon配置文件 135
9.2 倉庫相關配置 137
9.2.1 --disable-legacy-registry選項 137
9.2.2 --registry-mirror選項 138
9.2.3 --insecure-registry選項 139
9.3 安全相關配置 139
9.3.1 -p, --pidfile選項 139
9.3.2 -H, --host選項 139
9.3.3 --tls, --tlscacert, --tlscert, --tlskey, --tlsverify選項 141
9.4 日誌相關 145
9.4.1 -D,--debug選項 145
9.4.2 --log-level選項 145
9.4.3 --log-driver和--log-opt選項 146
9.5 存儲相關配置 148
9.5.1 -g, --graph選項 148
9.5.2 --storage-driver選項 148
9.5.3 --storage-opt選項 149
9.6 網橋相關配置 154
9.6.1 --bip選項 154
9.6.2 --fixed-cidr,--fixed- cidr-v6選項 154
9.6.3 --mtu選項 155
9.6.4 -b, --bridge選項 155
9.7 容器與外部通訊 156
9.7.1 --ip-forward選項 156
9.7.2 --iptables選項 156
9.7.3 --ip, --ipv6選項 156
9.8 其餘網絡配置 157
9.8.1 --default-gateway、--default-gateway-v6選項 157
9.8.2 --dns,--dns-opt,--dns-search選項 158
9.9 execdriver配置 158
9.9.1 --exec-opt選項 158
9.9.2 --exec-root選項 159
9.10 其餘配置 159
9.11 習題 159
第10章 如何編寫Dockerfile 160
10.1 本地編譯鏡像 160
10.2 dockerignore文件 162
10.3 Dockerfile格式 163
10.4 Dockerfile指令詳解 163
10.4.1 FROM指令 163
10.4.2 MAINTAINER指令 164
10.4.3 RUN指令 164
10.4.4 CMD指令 164
10.4.5 LABEL指令 165
10.4.6 EXPOSE指令 166
10.4.7 ENV指令 166
10.4.8 ADD指令 168
10.4.9 COPY指令 169
10.4.10 ENTRYPOINT指令 170
10.4.11 VOLUME指令 173
10.4.12 USER指令 174
10.4.13 WORKDIR指令 174
10.4.14 ARG指令 175
10.4.15 ONBUILD指令 177
10.4.16 STOPSIGNAL指令 178
10.5 CMD、ENTRYPOINT和RUN的區別 178
10.6 習題 179
第11章 Dockerfile最佳實踐 181
11.1 基本原則 181
11.2 Dockerfile指令最佳實踐 183
11.2.1 FROM指令最佳實踐 183
11.2.2 RUN指令最佳實踐 183
11.2.3 CMD指令最佳實踐 185
11.2.4 EXPOSE指令最佳實踐 186
11.2.5 ENV指令最佳實踐 188
11.2.6 ADD和COPY指令最佳實踐 189
11.2.7 ENTRYPOINT指令最佳實踐 191
11.2.8 VOLUME指令最佳實踐 194
11.2.9 UESR指令最佳實踐 196
11.2.10 使用gosu工具 196
11.2.11 WORKDIR指令最佳實踐 198
11.2.12 ONBUILD指令最佳實踐 199
11.3 如何減少鏡像體積 199
11.4 一些官方鏡像的Dockerfile 205
11.4.1 Golang鏡像 205
11.4.2 Perl鏡像 208
11.4.3 Hy鏡像 209
11.4.4 Rails鏡像 210
11.5 習題 211
第12章 使用容器提供服務 212
12.1 使用容器提供數據庫服務 212
12.1.1 使用容器提供MySQL 212
12.1.2 使用容器提供MongoDB 215
12.2 如何使用容器提供Web服務 217
12.2.1 使用容器提供Apache HTTP服務 217
12.2.2 使用容器提供Django服務 218
12.2.3 使用容器提供Gitlab服務 219
12.3 如何使用容器提供編程環境 220
12.3.1 使用容器提供Java環境 221
12.3.2 使用容器提供Golang環境 222
12.4 習題 225
第13章 創建私有鏡像倉庫 226
13.1 鏡像倉庫配置詳解 227
13.2 version選項 231
13.3 log選項 231
13.4 hooks選項 231
13.5 storage選項 232
13.5.1 filesystem選項 233
13.5.2 azure選項 234
13.5.3shell
前 言
爲何要寫這本書?
在2013年3月,Docker項目正式開源。短短的三年中,Docker已經迅速普及開來,雲計算、大數據、互聯網等相關IT技術公司紛紛開始擁抱Docker。在硅谷,有200多家Docker相關的創業公司。Google、Microsoft、AWS、IBM等大型技術公司都已經加入Docker生態圈,開始使用Docker,併爲Docker社區共享。OpenStack、Hadoop等雲計算、大數據框架也開始向Docker遷移。
在國內,從Docker誕生之日起,各大技術公司和極客們就開始緊密關注這項技術。從2014年下半年開始,陸續有公司開始把現有系統遷移到Docker平臺。BAT、華爲、新浪、京東都有Docker相關產品上線。Docker的普及愈演愈烈,大有掀起第二次雲計算革命之勢。
筆者從2014年年初開始接觸Docker,一下就被Docker的輕量性、便捷性所吸引。經過在實際項目中使用Docker,發現Docker天生就是要解決敏捷開發、持續集成、持續發佈、動態遷移、動態伸縮等互聯網、雲計算、大數據行業廣泛存在的問題。經過把產品容器化,加速了開發、測試、發佈的流程,產品發佈時間從半天減小到47秒。經過鏡像提交產品,解決了開發、測試、發佈的環境異構性問題,使產品能夠平滑地在各個部門之間傳遞。
在Docker的實際使用中,筆者遇到了不少棘手的問題,花費了大量的時間研究、分析、測試、解決這些問題。同時,筆者也發現不少初學者正在重複筆者走過的一些彎路。究其緣由,是目前國內沒有一本詳細介紹Docker實戰的書籍。所以,筆者決定把本身的一些經驗總結出來,編撰成書,爲廣大讀者服務。
本書有何特點?
1.配置詳細
本書涵蓋Docker Daemon、Docker存儲驅動、Docker鏡像倉庫的全部配置選項,並對每一個選項都有詳細的介紹。
2.注重實踐性
本書從實踐出發,介紹在實際應用場景中應該如何定製Docker。詳細介紹鏡像製做的步驟、指令和最佳實踐,各類存儲驅動的區別和使用場合,以及Docker Daemon各類擴展功能和接口的使用方法,並列舉了典型鏡像的使用方法。
3.對Docker框架和原理進行分析
本書深刻淺出地介紹Docker使用的核心技術:Namespace、CGroups和UnionFS。方便讀者理解Docker原理,並在實際應用中能夠更好地使用Docker。
4.項目案例典型,實戰性強,有較高的應用價值
本書中的第11章和第12章專門從實踐出發,詳細介紹鏡像和容器的使用,並列出詳細步驟,方便讀者快速上手。
5.提供完善的技術支持和售後服務
本書提供專門的技術支持郵箱:book@ghostcloud.cn。讀者在閱讀本書過程當中有任何疑問均可以經過該郵箱得到幫助。
本書內容及知識體系
第1篇 Docker基礎知識介紹(第1~3章)
本篇介紹雲計算的歷史和基本概念,Docker的安裝和基本使用。幫助讀者對Docker有一個基本的瞭解,並搭建本身的Docker環境。
第2篇 Docker的基本使用(第4~7章)
本篇介紹Docker的構架、Docker的工做方式、下載鏡像、製做鏡像、運行容器、配置容器網絡、在容器中實現數據持久化、備份還原遷移容器卷、關聯容器代碼作持續集成、查找鏡像、下載鏡像、上傳鏡像等內容。
第3篇 Docker的高級使用(第8~13章)
本篇主要介紹Docker中的存儲驅動、配置Docker Daemon、製做鏡像和搭建倉庫等內容。
Docker鏡像提供了豐富的應用,對於Docker的流行起了重要做用。本篇詳細介紹如何製做鏡像,爲讀者介紹基本指令和最佳實踐。Docker鏡像和容器有很是緊密的聯繫,本篇詳細介紹二者的關係。
鏡像和容器是經過Docker的存儲驅動管理的。Docker中有多種存儲驅動,每種存儲驅動在性能、可擴展性、安全性上有差異,不一樣應用場景應該選擇不一樣的存儲驅動。本篇詳細介紹各類存儲驅動,爲讀者在實際應用中選擇存儲驅動作指導。
Docker Daemon是Docker管理鏡像和容器的核心,除基本功能外,還提供不少擴展功能和接口。本篇詳細介紹每種擴展功能和接口的具體使用方法。
第4篇 Docker常見問題(第14章)
本篇主要總結Docker學習中遇到的一些問題,爲讀者提供統一的解釋。
適合閱讀本書的讀者
?在校計算機相關專業的學生;
?Docker初學者;
?基於UNIX/Linux環境的系統運維人員;
?基於UNIX/Linux環境的測試人員;
?基於UNIX/Linux環境的開發人員;
?系統構架師;
?CTO;
?互聯網行業的開發、測試、運維人員;
?初創公司的技術人員;
?雲計算、大數據行業的技術人員。
閱讀本書的建議
?沒有云計算背景知識的讀者,建議從第1章順次閱讀。
?對於尚未使用過Docker的讀者,建議從第2章開始閱讀,首先搭建本身的實驗環境。
?對於特別關注Docker在存儲方面的讀寫速度、穩定性、安全性的讀者,建議詳細閱讀第8章。
?對於須要在特定環境下定製Docker Daemon的讀者,建議詳細閱讀第9章,學習如何修改Docker Daemon的配置,以適應具體應用場景。
?對於但願在開發、測試、部署中使用Docker鏡像提交產品的開發人員和運維人員,建議詳細閱讀第10章和第11章,學習如何製做鏡像。
?對於但願直接使用容器提供服務的讀者,能夠詳細閱讀第12章,學習如何使用官方鏡像運行容器。
?對於須要創建私有倉庫管理鏡像的讀者,能夠詳細閱讀第13章,學習搭建私有鏡像倉庫。
?每章中都介紹詳細的配置選項,讀者須要經過實驗,深入理解和熟練地使用這些選項。
?讀者能夠首先通讀一遍本書,對Docker使用過程有一個大概的瞭解,而後根據本身的應用場景,詳細閱讀相關章節。數據庫
本篇文章由一文多發平臺ArtiPub自動發佈apache