前言 ........ XI4 W# i" ]' u9 _4 V3 }+ l9 G
1 准备Docker 宿主机 ................................ 1
% p; Q/ a$ A: }- [! k3 S准备一个Docker 宿主机 ... 1# ], M s0 V8 E: I- V
使用Docker 镜像 ............... 2- Q B' u+ Q0 Z! \# b& y* J8 v
编译Docker 镜像 ....... 3! x8 }& Q. C( ?
推送Docker 镜像到资源库 .......................................... 4
' Z a" \& M' v+ g6 V: v7 f从资源库中拉取Docker 镜像 ...................................... 6
. R( o* m. P6 T, V Z/ ~1 T0 @# F" H运行Docker 容器 ............... 70 a- M1 F! T# l( m2 q8 A6 Z
暴露容器端口 ............. 7
* W7 ~0 A% q5 r+ w" b T发布容器端口 ............. 9! r/ Y& D0 t9 q" w
链接容器 ................... 11
; F5 Y* }- ~( G9 y$ D' V交互式容器 ............... 12
! g7 z3 J- o1 O P小结 .................................. 14
2 Y7 S3 s4 ~0 C9 e: M1 [3 x$ l2 优化Docker 镜像 ................................. 15
6 b- I ^* P J h) d: z v降低部署时间 ................... 15- l. h8 w! f* i# O* n
改善镜像编译时间 ........... 18* L6 r/ Q0 c/ Y+ o9 G- G
采用registry 镜像 .... 19
& w/ b8 C7 F6 E# S8 j- z复用镜像层 ............... 212 @1 g: @8 L5 n5 _7 l/ _ S
减小构建上下文大小 .................................................. 28
& P8 y- e2 U9 b6 z) |- k使用缓存代理 ........... 29
- l0 n6 h3 {7 L减小Docker 镜像的尺寸 . 32
" Z# H, O. ]# L. n链式指令 ................... 327 R& l- f& z2 j" h W0 f) ~3 x8 i
分离编译镜像和部署镜像 .......................................... 346 h/ r- k0 s5 y2 z1 x
小结 .................................. 37' v0 A1 K- g5 R. G7 P) t) i
3 用Chef 自动化部署Docker .................. 39; @# I: A( i7 `, I0 P
配置管理简介 ................... 39
) Y9 u' d7 J) {1 \使用Chef ......................... 40" J) v; c3 ?/ X* X, }4 v* i
注册Chef 服务器 ..... 41) G+ B5 q: `& ]! p
搭建工作站 ............... 43
k/ N/ O: }2 X; J启动节点 ................... 45, u N5 G9 \; Z
配置Docker 宿主机 ......... 47
/ T( k$ R$ F1 ^1 |; b) `) X s部署Docker 容器 ............. 51
: c8 x( c/ l; h1 |- o l* G, e可选方案 .......................... 55, {! w; X' {% c& j
小结 .................................. 56 T P" Y1 G7 O& J" G2 p
4 监控Docker 宿主机和容器 ................... 575 X( L0 c' @2 \6 m! R' y4 P [
监控的重要性 ................... 57
$ @4 n% z; n4 ?/ }收集数据到Graphite ........ 58
+ Z0 s9 T U5 s" e1 ?, `生产系统中的Graphite ............................................... 63
7 N1 X Z/ k5 j$ ~6 i) C用collectd 监控 ................ 63
1 D% y; ]8 o$ G' t+ n) B8 W' \8 y收集Docker 相关数据 ................................................ 65
3 j' o) S- S3 L4 N9 x( f) I5 f+ w在ELK 栈中整合日志 ..... 69
}+ I4 z8 K0 }! C2 b' R7 e转发Docker 容器日志 ..... 725 C$ r$ h, D+ }. {
其他监控和日志方案 ....... 757 i7 M6 j& }# l8 ~7 {
小结 .................................. 76
# i2 V6 ?$ k9 l( Z5 性能基准测试 ........................................ 77- n, o5 o; q: N% [; B. N7 T6 t: M
配置Apache JMeter ......... 77+ R* O( y3 h# B' m: y
部署一个简单应用 ... 78
+ h+ }3 X/ K# T4 {$ \! Z n安装JMeter ............... 81
4 l1 s% D/ Q Y6 H! l- ^/ M U生成性能负载 ................... 82. d" r& I/ o) O2 t" d% k1 |$ P; n
在JMeter 中生成测试计划 ......................................... 83
1 T# f/ Y/ s' v( x+ K9 d1 a S6 R分析基准测试结果 ........... 84: C; m+ o7 T' q, I( u+ J- n! g
检查JMeter 运行结果 ................................................. 854 o' }7 E0 S- B' d6 C
在Graphite 和Kibana 中观察性能 ............................ 87; \: W# T* S2 K
性能调优 .......................... 91: Y2 [8 ]( M* C; t: C9 Q: ~
增加并发 ................... 91
w' H5 x" W4 M, Q" l/ f% b. @运行分布式测试 ....... 92
]+ j# b0 o+ a) U3 R% w其他性能基准工具 ........... 93
" g A$ n4 t) @/ n小结 .................................. 94% F5 U4 g: l( f5 z! l9 @6 Q
6 负载均衡 ............................................... 95( n h0 _2 Y' b5 F6 p
准备Docker 宿主机集群 . 95( T; ~; f z( U8 f* ^
使用Nginx 来做负载均衡 .................................................. 97
& z, h, T2 z* b1 z8 g4 g水平扩展Docker 应用 ... 1000 d% O( q& A- v) R4 N- ?! y
零停机部署 ............. 101
4 y+ V, s/ S, }7 t4 c其他负载均衡器 ............. 105 E" S |% F$ a1 R
小结 ................................ 106/ y) w" I( h3 n6 m8 {$ C9 V4 r
7 容器的故障检测和排除 ....................... 107+ o9 N5 f q) }7 C* { e/ D, |2 `0 m
检查容器 ......................... 107, q+ d" y) L4 s5 \
从外部调试 ..................... 111( e# A6 }8 c ?3 i- W; Q
追踪系统调用 ......... 111. I }# ` g! d, e1 \5 W
分析网络数据包 ..... 114 java8.com7 ~, @& [9 z- } c! v0 t
观察块设备 ............. 116# M6 ?* K( z! Z- K
故障检测和排除工具 ..... 119
3 R6 Q% }7 ?3 ?6 e( k \小结 ................................ 120
; s9 N; |9 I# x8 H8 g% T8 应用到生产环境 .................................. 121
# E' i6 j5 v8 I" R# v3 l7 ]( e FWeb 运维 ........................ 121
" P# ~/ l8 J* u4 Y使用Docker 支持Web 应用 ............................................. 123
0 R) Y! _; G! A. n% E* t部署应用 ......................... 124
5 _% k& W/ f2 h* L扩展应用 ......................... 125
5 K9 \& y# W% u更多阅读资料 ................. 126
. |8 k/ I' G ^" D' g9 W小结 ................................ 126: @1 v/ K% X' y2 T% c7 R3 |: z
8 X# N3 F( e3 V2 Z" l& T. Y" R