前言 ........ XI
5 d* M$ \9 G }7 b( W1 准备Docker 宿主机 ................................ 1
6 P. x7 G' w% t* A/ K5 H1 `% U) e准备一个Docker 宿主机 ... 1
; C/ Y0 y2 M, }使用Docker 镜像 ............... 2
/ O3 c% I Y" l3 Z6 ^2 r$ V1 _编译Docker 镜像 ....... 33 ^5 r- R6 x; {+ k" _
推送Docker 镜像到资源库 .......................................... 4
! s1 Q) m% L% N; w8 o( O$ e$ o从资源库中拉取Docker 镜像 ...................................... 6% f5 V) v( X+ |+ u# |# u
运行Docker 容器 ............... 7
^. N( o; c4 e2 o5 g @暴露容器端口 ............. 7
( m* F: i: W* t+ j; X7 C发布容器端口 ............. 9
+ `& c+ S5 ]$ p& x! w链接容器 ................... 11( k4 ~1 b0 \: g6 q8 Z/ y
交互式容器 ............... 12
% A2 H* B& Q( \( ~( t小结 .................................. 148 ~" m$ `2 s& @2 \+ h- A
2 优化Docker 镜像 ................................. 15
) h# o4 y/ G9 S8 A; ^降低部署时间 ................... 15
* d) B% @7 [2 `改善镜像编译时间 ........... 18
! d5 H2 G7 h6 u* U d采用registry 镜像 .... 19
; y9 [9 X: @5 \ V9 o2 o* o复用镜像层 ............... 21
% m, h! L, w' |+ d( P% o1 i: f' k减小构建上下文大小 .................................................. 28
! N" k7 p# v2 Y. m5 N0 B使用缓存代理 ........... 29 `5 g/ u) X+ d/ |& ?
减小Docker 镜像的尺寸 . 32+ Z& T2 z9 f$ S
链式指令 ................... 32
) J0 J( u1 b0 ]: {! s+ j分离编译镜像和部署镜像 .......................................... 34
$ n/ s+ Z0 L/ O j小结 .................................. 37
$ T0 X4 [6 l, U0 s3 用Chef 自动化部署Docker .................. 39 @+ v- _+ r \
配置管理简介 ................... 39
6 U6 U9 ]8 N$ E) o- j8 F使用Chef ......................... 40" `9 P6 x. v6 n3 l7 E
注册Chef 服务器 ..... 41
& Z) Q9 e3 O6 n) h: y* t. h搭建工作站 ............... 43
. }" Z" E _' i/ ]启动节点 ................... 45
* z' O! _8 f. r6 h( ~3 u6 _配置Docker 宿主机 ......... 477 ^( ~8 n: w7 y% s8 m3 i
部署Docker 容器 ............. 51
1 c/ d' z0 _! S! r可选方案 .......................... 554 p" Z) X" A3 x2 u
小结 .................................. 56' ^2 e% K& ? K+ C
4 监控Docker 宿主机和容器 ................... 57
3 Z- Y; E) }, D2 R7 H H! I, B监控的重要性 ................... 57
2 i" l% N, e# C, z1 p, B* L4 f6 k收集数据到Graphite ........ 58
6 f" J9 {0 h' I7 R+ V2 ~/ }生产系统中的Graphite ............................................... 63( M0 O7 v ?0 a K5 }% I
用collectd 监控 ................ 63
/ r+ _" \. F! Y! `收集Docker 相关数据 ................................................ 65: I: o+ R* i# q% Z
在ELK 栈中整合日志 ..... 698 j2 K6 h S5 ]) `3 T' Q1 u0 J
转发Docker 容器日志 ..... 72( f' m7 P R8 d! n* J2 ^
其他监控和日志方案 ....... 75( B' W6 S s l
小结 .................................. 76! l7 b( }4 {' I0 [5 S7 d
5 性能基准测试 ........................................ 77
# W# B; P# |/ N2 z# u4 H, `配置Apache JMeter ......... 77
. w: E2 U2 X) L" Q9 K u2 H部署一个简单应用 ... 78' A: N$ T N- ]2 H/ B9 w: o
安装JMeter ............... 811 F, x$ I- A) e/ C, w8 e. v) F
生成性能负载 ................... 82
, ]1 V. D( l5 `9 N5 K在JMeter 中生成测试计划 ......................................... 83
! L! P/ B# |. z; ~! H分析基准测试结果 ........... 84
3 Q7 L- n6 v# L, A检查JMeter 运行结果 ................................................. 85
) q; f8 @0 G4 j3 b0 P' [9 p2 A在Graphite 和Kibana 中观察性能 ............................ 875 p, B5 @) R9 Y* m! P
性能调优 .......................... 91, n4 a1 c9 \' d9 L3 `
增加并发 ................... 91' t4 J) U- ]* {3 C1 R
运行分布式测试 ....... 92
2 `; q" V/ h: A( O: W. N其他性能基准工具 ........... 931 n2 u7 G% B* `4 H. Z3 c2 v
小结 .................................. 94
% _# m/ J3 m4 Y4 s6 负载均衡 ............................................... 957 F( K/ L5 j/ ^
准备Docker 宿主机集群 . 952 i- R: {* {+ |; a4 W# ?" ^
使用Nginx 来做负载均衡 .................................................. 97
. z: i5 t1 R' v; N6 E8 R; J水平扩展Docker 应用 ... 100
# K5 _/ g7 J; O: D; _# {零停机部署 ............. 101
7 ^0 G: k. p2 L. q7 q; _. t* ?其他负载均衡器 ............. 105
j, b H* A" G小结 ................................ 106( }, t5 \, A# h$ E
7 容器的故障检测和排除 ....................... 107- Q& K& `# g w; A' ]2 M' A
检查容器 ......................... 107
7 }# Z& ^4 o3 d7 I- y+ ~0 N0 T从外部调试 ..................... 111
e3 Y b7 b! o4 c9 j: M( z追踪系统调用 ......... 1110 [4 Q( i: A) C$ T( [2 ?! V4 B
分析网络数据包 ..... 114 java8.com @5 ?( @7 E+ O1 {1 v7 T! M" P
观察块设备 ............. 116
% R2 f/ |3 Z* d故障检测和排除工具 ..... 119& n* s1 j: Q2 Z2 N
小结 ................................ 120
3 T' F1 C/ c$ {. _9 E8 应用到生产环境 .................................. 121
+ \1 G( C2 @( ~2 CWeb 运维 ........................ 121! \$ e+ w% d" R
使用Docker 支持Web 应用 ............................................. 123
$ m: l' g, M7 U6 S9 z部署应用 ......................... 124: J8 V f7 f ^: ] g3 K5 e
扩展应用 ......................... 125: d- {0 @; I/ `/ F" ^; X; C. S. C
更多阅读资料 ................. 1266 m0 F* t/ P; \; { g$ F
小结 ................................ 1265 g$ v' K! U7 D- _+ C5 a
/ S2 g; k- c) H) j( C2 A! ?