|
Java电子书:Docker开发指南 格式 pdf 电子书 PDF 电子书 Java吧 java8.com
! P0 V, v& {/ z, ]* M0 T- [4 y" Z; L. N, N+ b$ ]- O) L
7 Z1 l7 B% {' f2 [( M, U编号:mudaima-P0259【Java吧 java8.com】
( F. ^1 `3 q% a; o
7 Y, C' T0 ~- h5 }
- U1 |6 o% ?& m' V) K% I
7 J# j2 Z: e# P# KJava电子书目录:前言 xi
7 x' W& Z+ ~' c7 u
0 T9 M7 r6 Y4 ?; Q3 t4 J0 \; Y3 q部分 背景与基础
- f9 V# y, j# T, P. c |4 k W4 \/ ^+ P: C* ]- K- A% r/ t3 L
第 1 章 何谓容器,为何需要它 3
1 \ i) i9 g1 \1 K
" A% t; S; S( w+ z/ A3 r+ f1.1 容器与虚拟机的比较 4
+ ?: ?. w8 S5 A' t/ t
0 D: k1 t$ D. g3 R1.2 Docker与容器 5& x$ M6 U4 W0 _' a; e
, [7 j% |; y4 @8 d* s e1.3 Docker的历史 7
* h+ o7 G1 R( Q4 ^6 K
8 R1 i( |8 |) T3 h1.4 插件与基础设施 8
- Y; I" g3 A! g" u& `5 y2 {" `) P3 K! i
1.5 64位Linux 9
( L+ v6 i* C) C" @/ c2 B, I$ D/ F$ q5 Z) t6 y, M- d7 s; K
第 2 章 安装 10
8 }- d1 W/ e0 f! y* V: z, v' Q
6 ^( b# B9 @" s' ?/ w8 @2.1 在Linux上安装 Docker 10
5 z2 k% e1 S- a; t. E3 F& y0 R7 g, h) e O% `
2.1.1 将SELinux置于宽容模式下运行 114 U0 t/ |1 g K$ d7 A
+ ^8 X$ ^; f( ]! t
2.1.2 不使用sudo命令执行Docker 11
/ M F- Q; _! U6 X8 x1 s! d( i/ X0 p/ `# i+ e
2.2 在Mac OS及Windows上安装Docker 12
! P v: B: O N1 h- u0 V! n2 ~! ^- _1 G2 P2 u0 z6 n3 p0 O
2.3 快速确认 13
0 S- V/ E% N( t. g' ^, @: c ^; \% {- V* t, o) E7 X
第 3 章 迈出步 15
- |; X+ {$ o' s' t0 X% _! Z, ?2 Q0 v
3.1 运行个镜像 150 \% A% h! Y4 W% z1 t; k; w
( ~6 [1 S4 D- j, X: M3.2 基本命令 163 V( Z. |2 W2 I# C* J6 \( q
, E6 r# P; l" e' d: _ u3.3 通过Dockerfile创建镜像 20
" k, ` t8 ]. g7 _* L! g& N) j; w3 ~9 j
3.4 使用寄存服务 22
3 U0 w% [( D$ s5 O6 }$ |* m' M" D5 e
3.5 使用Redis官方镜像 24! n8 }% a# U2 a+ w
2 V) W+ g7 p/ j* N, s1 n: Q3.6 总结 27
+ ~- g; t$ ?* j# X( A* y5 Y1 S6 x2 e+ z
第 4 章 Docker基本概念 28
M. B/ o8 s! x& ?1 B% B) \3 B j5 {$ R* o
4.1 Docker系统架构 28
j/ J6 M; |) \3 p o& o) a2 w: _+ g9 Y1 t
4.1.1 底层技术 29
: Y% l' E' ^( O" f0 J2 n. J, Z8 x9 M( K# t
4.1.2 周边技术 30. m0 h% {4 k. @6 F* ?
0 v# Z$ \6 e4 }9 C4.1.3 Docker托管 31
+ a2 `( K1 C+ a$ { `& q H+ W) R; Y8 m6 k( w5 W( R. w
4.2 镜像是如何生成的 32* v3 v- T: f5 j: {+ R" W
X+ t6 g! a+ }2 e1 B
4.2.1 构建环境的上下文 32" ~3 V; u; }- b$ u
/ J4 z- n; d* F$ c4 }
4.2.2 镜像层 33: S2 _/ [3 |, O& P
0 k- H& o: h& S( [5 o2 E% Z, a4.2.3 缓存 35# q! A) |6 \2 @" \* k
: {# ^' V) n, f0 i& I2 S& B
4.2.4 基础镜像 35) C# n4 R9 P0 K) \
* p) E$ J0 d% \5 K
4.2.5 Dockerfile指令 37
7 w; r7 h% {0 w: r5 {6 I5 y7 Z4 V' `6 H# d" \
4.3 使容器与世界相连 39
. {2 b9 s4 J* l
2 ^" E8 [, ^0 j% R4.4 容器互联 40: x' d6 o4 B- D, |& q1 P
# n ]" d* T! @6 Q+ w5 k" @' ]4.5 利用数据卷和数据容器管理数据 41
3 C# R1 b8 B! O
6 x1 d( z) G1 q/ R4 N4.5.1 共享数据 43
- ^- ]( D# J$ H9 S$ N7 r7 I1 t
* v. B T y5 [4.5.2 数据容器 44
5 B/ Q+ [0 n4 o( J' v# J, ^8 H8 v+ ?6 i, {2 Y& T/ b4 @9 c
4.6 Docker常用命令 45
4 A- Y2 y3 U( s. A; n) Y" @' X
& X5 D9 D4 R6 Y" A$ Z9 ~4.6.1 run命令 462 O5 T$ ?3 _' C b" l* m( }
0 m f0 m1 g2 e- R) a
4.6.2 容器管理 48" H' N" T! i9 ^; y0 _+ U9 x ?9 M% I" }
2 d5 {6 d) F4 G. a; W& g1 n, k4.6.3 Docker信息 50% w0 l& J) X0 l% i
+ s) D- R6 m5 A) a Y6 O
4.6.4 容器信息 50
9 V, i7 f% b( F; W% S" e6 u& n; j8 U u
2 a& F- d2 ^+ l1 ]; A! H _) K4 k4.6.5 镜像管理 529 G; h; r8 i4 l9 K
& h( ?6 h& W) P1 c' i$ B2 b& B! O4.6.6 使用寄存服务器 54# Q# L1 w, {0 k- y$ e
/ {# V2 g5 { V& q4.7 总结 55
* X% B( S) ]4 w0 Q% H& O! b; \+ x% S
第二部分 Docker与软件生命周期 R4 `" I1 @+ x
) N7 K- p: J3 b' e9 O第 5 章 在开发中应用Docker 59
; T0 i0 g& w6 Z0 [( R; ]
9 A2 z! Q; `5 _5.1 说声“Hello World!” 59
- H( {( j( q3 f# [3 e! ^- F) x5 A! X8 s, y' V
5.2 通过Compose实现自动化 67; q) z8 J+ j: Q! m( u
2 ~; u3 d! C7 X6 x) C! h
5.3 总结 69
- M( O- q" f0 o; h- b" c9 S
, y% _; ~/ `3 o, @. x8 V0 z6 r. z第 6 章 创建一个简单的Web应用 71. Z6 z5 l1 v/ q. b
4 C3 m6 a1 i- T" d G6.1 创建一个基本网页 72
, m! U, C' C" q% I9 N# y
! u, g! J" H( i$ s5 \: Z! D* n6.2 利用现有镜像 73
- ^) p& I" E* ]) n. w2 L# l
" s; {; _7 E8 k+ M% W8 j3 g6.3 实现缓存功能 78
5 d& q4 G$ L: _( Z/ l. C( i& v
2 F- n4 @& T( C/ ]$ Z6.4 微服务 81
) P/ i: x7 S( b# [, Z% k
+ x( r/ e6 O3 W9 R) s' Y0 q/ G/ e6.5 总结 81
c- |$ B4 u- i: m2 ~0 T+ A7 s9 j
第 7 章 镜像分发 82
, z# ^! Z$ W, W. ]# E9 G$ M& Y1 t$ Z' k; o* x7 ?9 y! q/ B: i9 ^
7.1 镜像及镜像库的命名方式 82
* d u1 Q1 e' J$ E0 r* E1 o O7 ~2 v* d( E& `
7.2 Docker Hub 83- U, N1 q& _3 C# R4 W u
9 y4 p6 A, k' o( n" ], j
7.3 自动构建 855 j+ R' [/ o/ {8 a r( `
1 e5 H3 n6 [* N2 I& T, L3 j7.4 私有分发 867 w0 S/ Z G+ R) K6 F
" d1 ]; z K! a2 k- E! J7.4.1 运行自己的寄存服务 86
% M1 |& p9 T0 D2 ]- u5 P9 x* A9 T& w6 r
7.4.2 商业寄存服务 92& A* Y. J7 G! A- H0 _
* ?- |- y$ o' r4 c1 N0 E, Q3 F7.5 缩减镜像大小 92) p, a0 K' U+ {; c2 X1 w0 h- i9 S6 _
( F: Z! E. O+ c7 z5 o; c9 y* I) ]
7.6 镜像出处 94- ]9 B% B- C; E
6 t C& C4 E' L
7.7 总结 94
~% W& k0 V' K" E& R$ O, p8 q* D! u: r8 P+ B8 Y( Q( l! d
第 8 章 Docker持续集成与测试 95, T J# Y: d q$ @7 q2 n8 A0 f+ o
4 M4 w9 u! G3 f
8.1 为identidock添加单元测试 95/ q0 n! h, l. w( x4 S' `; Q) b
6 |! ^2 L8 d6 s
8.2 创建Jenkins容器 100+ k6 v; C$ a& U' k
4 T7 Z/ n* q) O, i8.3 推送镜像 1061 ?8 v- {! e5 }' `
, V3 G4 a9 K' z4 O5 t; R8.3.1 给镜像正确的标签 106. K' c$ a* V) B+ F
( S5 {: m. ^' ]8.3.2 准生产及生产环境 108
/ b# y x1 Z9 m1 p- |: f
9 s f% j/ L" V. x- y1 `7 K- ~8.3.3 镜像数量激增的问题 108
5 G J$ d% M) ?) D, t' d: m4 m% J+ b
8.3.4 使用Docker部署Jenkins slaves 1093 {2 Q2 E2 U& H$ x# ?
) G( J8 p# [" W! w& _8 H3 B8.4 备份Jenkins数据 109. A7 Z2 g |+ X& J
4 q$ w- k1 ]1 S2 t2 M2 L8.5 持续集成的托管解决方案 109
# \% [, Q! i. n- E
1 R5 D b2 _1 x8.6 测试与微服务 110
5 v( ]* H) K$ e/ r( I, H8 }! ]7 A% H1 v f1 j1 W) ~! V: ~
8.7 总结 111
; v6 q, j& y& p& Z6 M1 l- Y$ |; q( g+ X% _; v0 r- j! h
第 9 章 部署容器 1136 }1 P2 r0 J) G" o" {% Z3 m7 Q) ~
, Y/ s$ Q. Y; f9 l1 F. i
9.1 通过Docker Machine配置资源 114
/ q9 {- b; l) k1 P( ~# ^$ r) r6 Y* Y5 Q
9.2 使用代理 117+ J' d1 x1 C5 f, w
, z* b5 R0 u4 G+ i9.3 执行选项 122, C' k$ H% @7 T9 B
8 ^' _& R% B# Z" i- @9.3.1 shell脚本 122
' }. R2 m% O$ \% J1 z' A; @. |+ h) u0 }0 H/ C9 H) A8 }' A6 p7 e* R
9.3.2 使用进程管理器(或用systemd控制所有进程) 124, X! `. G2 H: M
* S5 {! @' y% x) P3 O
9.3.3 使用配置管理工具 127
1 a* d; F. v, K8 v0 }1 U; y7 y" q4 c! ?
9.4 主机配置 130# H7 l2 Y+ ?$ [$ V; d5 U! _
. n+ H$ L1 _6 t; O# W4 s' t# Q9.4.1 选择操作系统 130
% s+ q+ w2 f% x; ?/ w, m x0 K
' B& O K: F8 f1 u4 }; j7 D: p9.4.2 选择存储驱动程序 130' u/ b9 \5 X% E
- E) b! T. u5 P, G
9.5 专门的托管方案 132
4 \9 C5 v3 A E* o$ I( T: ? `/ v, t- W# I5 |5 v8 }( }1 k
9.5.1 Triton 132$ p/ [! ^" Q; I# X7 h# U4 [
2 X N" Q- I% x! O% R$ Y9.5.2 谷歌容器引擎 134( ^) ?) o# \3 L
, y; A5 {& W6 `# Q* z: C
9.5.3 亚马逊EC2容器服务 1351 J& u1 }6 p+ V0 ~. x) l- l+ d' n
( {, r6 f' }3 z9 d* g
9.5.4 Giant Swarm 136. @/ n3 O! S- ~8 r
% \- \8 ]8 a2 L2 s9.6 持久性数据和生产环境容器 138
9 |8 X8 X# m7 B0 C2 ~5 K7 Y* `7 ~6 i3 M: d, {
9.7 分享秘密信息 139
2 c: w( B8 u8 t5 J/ M7 B
0 P V! X5 w8 Y; f- j* E; `9.7.1 在镜像中保存秘密信息 1391 m$ D. e# |$ K6 Z! l/ C
7 U2 X: Q: E' z* [# S5 Z: h7 n9.7.2 通过环境变量传递密钥 139
: K7 ?9 R3 H+ Z7 i; U* E% e4 q; o6 n- C- g
9.7.3 通过数据卷传递密钥 140
$ {) q" }% M) W3 y$ d% m, a
* g% `. K& I7 A2 w- j( P9.7.4 使用键值存储 140
9 `! j+ ^, G2 x, m2 u
8 W; W, X( Y; F. Z) ]& X9 P f h" I9.8 网络连接 141
* |6 n' }! l7 W
. S* Z/ R: K5 J Z: u" f9.9 生产环境的寄存服务 1413 b+ ^1 a) H* W* a2 f) }: ]' t
7 c7 ]% L& ~1 M+ e7 }
9.10 持续部署 / 交付 141
& F3 S% I" H% ?1 M7 M- w) U7 a) t$ z) j. O+ v
9.11 总结 142
0 X) d* n/ m- k
( j. b1 R$ z( j1 z/ D6 h第 10 章 日志记录和监控 143
P$ A! ?' `! W; [5 B: K) C% }4 s7 A( G$ @
10.1 日志记录 144 j+ |; e. o* I# i' L( J
( N; A$ L4 R- }) z
10.1.1 Docker默认的日志记录 144
7 g; ^) f; G9 V% l6 |" g1 e; J' b m
10.1.2 日志汇总 145
$ T$ z6 P5 D3 x/ L* O! M' A& ?5 O: Q/ [6 B5 E8 J$ R
10.1.3 使用ELK进行日志记录 146
. H# Y" E$ @ U$ w' M8 x8 l* T
8 Q1 p* ^. H5 e/ G4 j" c9 o10.1.4 通过syslog实现日志管理 155# }: f, M: y0 x3 v0 r) M! N
% _3 M- j0 O! T+ F; t10.1.5 从文件抓取日志 1608 {8 b8 S% |/ z6 s4 b `
+ L1 Y' @ M% A" j9 ]4 J10.2 监控和警报 161: C5 P6 h7 b; M0 N$ r
+ \1 ~2 Q. L& N: F8 S! L' N10.2.1 使用Docker工具进行监测 161% k9 a$ G$ V' o; e
( W; A( J' |8 h m1 w9 ~9 {
10.2.2 cAdvisor 162
4 c7 R% h( Z1 [ v& E3 m* b
4 S* q$ t+ L8 d I% ^10.2.3 集群解决方案 1631 C* c" l/ j: e; c, t0 \
, w" y) n' m/ N; }5 `8 _
10.3 商用的监听及日志记录解决方案 166
) j! ^! t2 i* ?: C6 c+ H3 d- u5 X' {, m. F* U
10.4 总结 1666 u$ s) M- Y! Z
( E7 e5 ^0 G. b1 N( _( c& J* N第三部分 工具和技术
! ^. P4 Y& w5 G8 V& |: Z0 ~( U" \; G% Q% ?
第 11 章 联网和服务发现 169, m% U4 j" M) {; B) {6 q6 D3 ]/ ]
3 W, V/ q4 R/ |6 h. ?' `11.1 大使容器 170- b v( Q; S! H, ]" n4 q
/ Y$ p5 _ z$ s) ?. ^ a
11.2 服务发现 173
" X' p2 E( o" V
) W7 v2 K% J2 P. J' H11.2.1 etcd 173! b7 H S; ^6 @0 W0 @! a6 \
; C# g7 j5 o6 @
11.2.2 SkyDNS 177; j2 A' t) S$ \7 G. r2 }- I
1 B% \ p, u1 s0 q1 x' \" d
11.2.3 Consul 181
/ J) f0 b6 @5 D j/ l0 \" H( R( m* ~3 X& C' c; r
11.2.4 服务注册 185
; ?8 m0 Y; [7 g# {/ h# X- E6 t' u; W8 l$ U" N
11.2.5 其他解决方案 186+ t7 n( I; r) N+ b7 Q( u; j+ F
4 ^+ M; ^7 E5 }' x
11.3 联网选项 187, u, p1 M: L0 @0 |
, Y2 g! f. k! ]% V: p5 y2 ]/ ]. y" s11.3.1 网桥模式 187
% B5 e. p ?9 ~$ h# R- c1 |" D! M% B
11.3.2 主机模式 188 y, d& c3 V8 O5 j, ?3 K9 E
! c6 G( p$ K% J+ J2 s& D7 W2 A11.3.3 容器模式 188
5 M" G; U" G. p, r& \9 h
, @( K, h- [9 c, g9 `$ r' o11.3.4 未联网模式 188
5 p* T( ^; J5 u1 x+ U. b
* e5 [( S: ~- Y, g% `$ r4 q5 @) ~11.4 全新的Docker联网功能 188
7 c4 w) r9 X, M1 @9 x& D# |' s/ e' H5 z) W% L! k& f2 L4 G; l
11.5 网络解决方案 1904 R* S, h0 H) [1 n" _6 B5 E- S U
+ Q/ v: P; B; ^) C- R/ V) d
11.5.1 Overlay 191
7 q" i7 G9 A4 a$ b9 c* ~- N. z) [4 u+ b
11.5.2 Weave 1930 n/ ~6 k$ a) |9 y& a5 s! @) y% ?
$ L, h3 r6 [2 b0 _. A- O- I11.5.3 Flannel 196
- L5 q& c+ J4 [) F+ c% t3 Z5 e) F7 V! d1 M5 Y" F' I
11.5.4 Calico项目 201% a' U& T, f0 N
, _& z" l0 Y6 j: ~11.6 总结 205 c/ [7 h( ?, a; z% F8 U3 {3 T" ]
# u5 F0 ? k% w/ M/ R9 s) ]
第 12 章 编排、集群和管理 2076 }8 L9 F( }( Y; z
" m( X+ q- L* f& m0 B( h B+ J! f12.1 集群和编排工具 2082 |4 @4 Z( }' G: m7 R( P; C
2 \+ C6 _/ r. \" g12.1.1 Swarm 208
$ g0 T6 K: w: l* K5 x
* x* J/ N' v1 j$ D- r" H12.1.2 fleet 2147 V- W+ c# X$ i
5 i: |: H* z# ~) d' m, v: H x: k12.1.3 Kubernetes 219
& a0 v6 a+ l7 k6 ]+ i4 q9 m$ k
1 P: H- @8 @& s' x3 N' U/ W12.1.4 Mesos和Marathon 226, E+ ^8 L% K5 f* `: L
- {7 O1 W; x1 S; Q. e% S12.2 容器管理平台 2353 t8 \1 d9 F. G( p* e
X k: n; F' ]. g% c& b9 J/ ^12.2.1 Rancher 236. v3 O6 R0 _- l7 y
2 |( N7 ?6 r' Y1 R% h3 V8 T
12.2.2 Clocker 237" m: x' q5 B: m$ a
8 a9 L* g- x, m+ K2 |* y J
12.2.3 Tutum 2388 u: W6 b$ n7 n# h( k; {% F+ S
0 B7 h4 z7 g: Z. }7 ?) A0 G; }4 O12.3 总结 239
: y% s! r. Y' H) m
1 e/ V! u; o4 }$ Z第 13 章 容器安全与限制容器 241
5 O! F6 z$ d! W, `+ o; z4 e) g3 l- j
13.1 需要考虑的事项 242( |7 U( Q: B8 M2 E3 I- B
. a, ?2 O" f- `13.2 纵深防御 244 n' K3 \7 V9 ^9 M1 ?5 `1 m
N6 r$ d% {) z13.3 如何保护identidock 245
2 _* @* H( p5 G. q
: ?* H; J9 T; a& g6 o13.4 以主机隔离容器 2462 M9 Q# w! F* u8 \ J
* K2 H5 r, _6 m( i7 C( |. X1 `* ^
13.5 进行更新 246- j' O5 h( b4 j
J/ a4 E. L, u/ [; m13.6 镜像出处 249
$ I# E! D9 \/ `
+ {$ U. L9 N' @) J1 J3 w8 u13.6.1 Docker摘要 2509 g8 }3 S7 A+ n, ~) U* L
$ D9 H9 u$ O' M, r; M13.6.2 Docker的内容信任机制 250
. g) T: X5 V6 d8 S0 x& p6 p% m* M8 K/ K) @, ]' ~' q+ T8 _
13.6.3 可复制及可信任的Dockerfile 2542 d# E2 c) ~" v1 o/ I
8 P2 e$ j5 y4 d
13.7 安全建议 256
* s, Y9 N0 w& Q' {' q8 x: R, f% z9 g6 ?$ @- W2 u: w# v
13.7.1 设置用户 256) l& P$ o4 V, B( r1 @2 ]3 Z
( ]! X7 v, R! {8 V
13.7.2 限制容器联网 257
2 a7 A; b/ Z1 U
4 l% G; d) Y% Z( ^13.7.3 删除setuid和setgid的二进制文件 258
0 Y% b" f+ W) U9 Y$ B2 y$ k: J) V, Y4 z0 @5 T
13.7.4 限制内存使用 259; P/ {9 |. O* h7 w
/ s- ?' n8 ~3 f13.7.5 限制CPU使用 260) Q. j% }1 S+ @% D# I) K
; e8 r( D9 [3 P3 I( [/ Y6 s
13.7.6 限制重新启动 261
* e$ k8 n Y" I/ } `' ]; ]; V, @, G; Y) Q; O9 G; C' {
13.7.7 限制文件系统 261
) I- y$ @5 z4 S
/ J$ i9 @; G7 E" s8 q& D* K13.7.8 限制内核能力 262
" E8 c% r5 A) h6 P- h
) ^+ \' G: ^; B8 u! R13.7.9 应用资源限制 263 t; w$ R& C! Y# V" _: j. f8 j8 }
" k1 y( Y& ^" O
13.8 运行加固内核 264
# U& C" s0 v1 Z* W# D
8 E N$ g% G1 p8 j13.9 Linux安全模块 265' O1 h0 K" `9 R" c$ V
% {6 K: A) U; F; R
13.9.1 SELinux 2657 ]! L% @* ~5 z, D1 T! w
( p3 G2 w0 z" `3 P) b! v13.9.2 AppArmor 268& |& a) u$ j5 `
- Y; q9 L. U3 X4 E s; @
13.10 审核 268 }" r- t- V9 G+ G8 M1 C
( M4 g2 U7 F' Q9 {* X5 v) N
13.11 事件响应 269" S d c3 Q, H4 `& F
! Z' R$ I* c9 j4 P4 h# z: p
13.12 未来特性 269( k9 L' j2 L* m0 j9 g- n1 u
, L2 s! `( b" }& {13.13 总结 270# E3 h6 X5 H: X: p2 G
5 A/ {- i% ?" k8 F0 @1 h作者简介 271* _& Z5 X5 g4 ]2 t4 R
) f7 [" u; Q8 S9 H" f关于封面 271, f0 z: X1 L5 d# g% Z. l s8 @
百度云盘下载地址(完全免费-绝无套路):
, u. {/ V1 s# U% @- u1 w6 _ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|