第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
      · · · · · ·     (
收起)