Docker 容器實戰:原理、架構與應用

廖煜

  • 出版商: 電子工業
  • 出版日期: 2016-11-01
  • 定價: $330
  • 售價: 8.5$281
  • 語言: 簡體中文
  • 頁數: 276
  • 裝訂: 平裝
  • ISBN: 7121302446
  • ISBN-13: 9787121302442
  • 相關分類: Docker
  • 已絕版

買這商品的人也買了...

商品描述

<內容簡介>

本書介紹了Docker容器技術的背景和基本原理,以及如何定製化符合用戶要求的Docker Daemon,增加安全性、提高效率。.鏡像提供了千差萬別的服務,每一個鏡像都是要滿足用戶的某種需求。如何製作出體積小、安全性高、可配置性強的鏡像是困擾很多開發者的問題,書中詳細介紹了相關解決方案。本書的最後還介紹了各種流行的開源項目,讓讀者瞭解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.3 gcs選項234
13.5.4 s3選項234
13.5.5 swift選項235
13.5.6 oss選項236
13.5.7 delete選項237
13.5.8 cache選項237
13.5.9 maintenance選項237
13.5.10 redirect選項238
13.6 auth選項238
13.6.1 silly選項239
13.6.2 token選項239
13.6.3 htpasswd選項239
13.7 middleware選項240
13.8 reporting選項241
13.8.1 bugsnag選項241
13.8.2 newrelic選項241
13.9 http選項242
13.9.1 tls選項242
13.9.2 debug選項243
13.9.3 headers選項243
13.10 notifications選項243
13.11 redis選項244
13.12 health選項245
13.12.1 storagedriver選項245
13.12.2 file選項246
13.12.3 http選項246
13.12.4 tcp選項246
13.13 proxy選項247
13.14鏡像倉庫配置實例247
13.14.1啟動容器數據持久化247
13.14.2使用文件系統保存鏡像248
13.14.3使用對象存儲保存鏡像248
13.14.4通過中間件使用
CDN服務249
13.15習題250
第4篇Docker常見問題
第14章Docker常見問題252
14.1 Docker基礎問題252
14.1.1什麼是虛擬化技術252
14.1.2虛擬化有哪些分類252
14.1.3 Docker目前支持哪些操作系統253
14.1.4哪種系統最適合運行Docker 253
14.1.5 Docker有什麼好處253
14.1.6容器化技術是什麼時候出現的253
14.1.7 Docker和虛擬機有什麼區別253
14.1.8使用Docker容器需要什麼基礎知識254

14.1.9如何學習Docker 254
14.2 Docker高級問題255
14.2.1 Docker是否安全255
14.2.2如何修改已經運行的容器255
14.2.3容器有哪些網絡模式255
14.2.4容器如何進行持久化256
14.2.5為什麼進入容器,但退出後容器就停止了256
14.2.6容器停止了,如何分析原因256
14.2.7 Link容器是什麼意思256
14.2.8容器環境變量有什麼用途256
14.2.9容器中CPU、磁盤IO、網絡損耗大嗎257
14.3鏡像相關257
14.3.1什麼是Dockerfile 257
14.3.2 Dockerfile書寫的最佳實踐是什麼257
14.3.3容器運行中Entrypoint和CMD的區別258
14.3.4 Docker中容器鏡像的區別258
14.3.5 Docker的鏡像倉庫有哪些259
14.3.6如何擁有私有倉庫259
14.4 Docker三劍客260
14.4.1什麼是Docker Machine 260
14.4.2什麼是Docker Compose 260
14.4.3什麼是Docker Swarm 260
14.5習題260