|
Java电子书:Docker开发指南 格式 pdf 电子书 PDF 电子书 Java吧 java8.com5 H( U. H- I# r, d
2 E+ U1 R2 l" k: K1 `5 i- X
4 A9 B. W5 p1 o# J% L5 |- k: u+ f
编号:mudaima-P0259【Java吧 java8.com】 t9 `* q. e! ^ p: _% [
% O+ e! w: S) E. `+ D- S
& b2 H/ m+ H9 t2 X# @) [3 e
$ j: K& x* r; V! t+ |8 V1 r% E
Java电子书目录:前言 xi
" d0 {& W0 d, g0 P4 n* t0 ^, [# u! g
. q! D; {2 y' \) |4 H0 H6 U部分 背景与基础- u( O8 e& |6 |- \
# Z4 a" n" G! x0 u g
第 1 章 何谓容器,为何需要它 3 i) z' m0 O( k! I% O7 d
5 i# s* z$ \5 X: n& M
1.1 容器与虚拟机的比较 49 L: a" O. f7 ] |. ?0 n$ `
) e1 p4 e- `- b% ~- p, E1.2 Docker与容器 5
' ?, J& x" f: u: J! ~% g5 [! a7 m7 Q
1.3 Docker的历史 77 O! A: T; c% X5 M
" W# x% W- V0 ?6 @
1.4 插件与基础设施 8
2 J9 c3 c2 A1 T) c6 {+ g6 g1 v, n. w- V
1.5 64位Linux 9
8 j& [0 M) T+ C/ L) M; v# g& S
" u7 u! k+ I6 u' D1 d# T, J第 2 章 安装 10: N2 }& @ R7 M6 J5 w* k, P8 D1 H
1 w: b+ W$ P$ l7 u; N( M/ A- {+ G0 \2.1 在Linux上安装 Docker 10% T s1 H' {6 x
+ x, Z! m: F) p# @6 w+ Y: T
2.1.1 将SELinux置于宽容模式下运行 11" d: y" B7 ^ m5 q4 P3 ^
& H( b$ G x5 K8 Y- T
2.1.2 不使用sudo命令执行Docker 11
+ o3 C8 |* T5 x! V
; \. V9 g$ I1 s- m2.2 在Mac OS及Windows上安装Docker 127 k/ g1 H/ K. Y) j: E4 H3 }, X8 |, A
1 z! w* n& k/ R: W+ y2 z( b2.3 快速确认 13
/ G, Y7 y. F6 |
4 f, b1 ^5 \$ ~4 M第 3 章 迈出步 15+ C( b6 h) [$ |& m4 Q
# w) i7 A$ k4 `4 s# y
3.1 运行个镜像 155 X, |! e2 k( r
) Y3 b; P g7 }9 Q1 g! k+ S3.2 基本命令 16. B3 T) D* x* A$ C8 L$ R
# t+ G) y! d; C- A c+ M) t* `8 A: E3.3 通过Dockerfile创建镜像 203 Z6 X' F i$ g
* e1 ~, E5 i: k, c# Q0 g
3.4 使用寄存服务 22
% u6 l( A7 e5 Z Y
1 ^! K) I9 _* W/ x- k3.5 使用Redis官方镜像 24# s+ m: k; B8 ?1 n) F3 d/ O Y
, \; T) {1 ~9 g" Q& @& `% y3.6 总结 27/ t" L, Z" T6 d0 Q. C# T. t) ?
* {" }) d, P: w' i第 4 章 Docker基本概念 28
( s$ z1 q1 E7 Z6 U3 Y" o' ]+ c5 B
# v2 g8 Z1 E4 B" J4.1 Docker系统架构 285 t; _. g4 u# r
0 n* J8 {8 ?; X% q8 B9 I
4.1.1 底层技术 29% c- c: Q; h* x0 {' K& S5 _
5 Y) m+ ^5 C7 Z; Y% y
4.1.2 周边技术 30
. ~, I/ q. r% \, I1 b3 c. d0 e4 K9 i$ ^! u
4.1.3 Docker托管 31
5 i; b5 {' ^1 `3 _6 X+ n, X( e5 F' {- m6 O5 B* M
4.2 镜像是如何生成的 32
9 W# V6 z: g) Q
3 a3 W" {6 f: i- P7 m! H4.2.1 构建环境的上下文 32+ w# `) Y4 j5 i6 M6 K/ a4 g" B- P; e2 z
2 u7 b5 B& M% q5 X( J9 s2 v3 L
4.2.2 镜像层 33: w; M( T9 I5 Y. _' {3 Q
9 x) J" I( o0 L/ u9 _# z( T7 T4.2.3 缓存 35; m+ T5 T \- E5 c6 O# _. X
& a5 `. N7 f4 j9 i7 Y# I4.2.4 基础镜像 354 k8 j' K2 B6 j( P- Y
8 c/ n$ `8 G/ U, ^4 o8 V4.2.5 Dockerfile指令 37
2 \5 K6 e( z% ^2 \: A# [
* q/ b& R3 f ]9 N& P0 C4.3 使容器与世界相连 39: @: K+ U$ i5 B' M
5 D9 B7 Z$ ?9 B0 N+ }8 O
4.4 容器互联 40+ L5 ~, n! a, ^- _) m! u
~/ n3 T: p0 f: X- I" b ~4.5 利用数据卷和数据容器管理数据 41
" s6 K. o* ? x" q- u/ L2 r, e& A5 J' m' ^
4.5.1 共享数据 43
4 \" U" W$ H6 A2 _2 O: u! Z* {' e9 `! C4 B0 L4 a' G
4.5.2 数据容器 44
) E" f ~; G' d; ]1 F: Y2 o# p4 x- Q6 H2 m# E2 _
4.6 Docker常用命令 45
9 q3 q9 t' f/ R& I8 f8 c; v7 `
' F1 E0 ~6 b# u/ i4.6.1 run命令 46& x) y- c9 n3 M; V# }
9 ^' w3 M2 V5 _' q4.6.2 容器管理 48
( p, \- X, A* _7 U; v# q2 G. |( C' B2 B) `( N6 M% w4 r& Q' T
4.6.3 Docker信息 50
1 v& b0 H% k' y1 Z4 u) K3 G# x2 v7 q3 k' B3 Y9 ~
4.6.4 容器信息 500 Q8 F+ D$ Q# s0 I7 P
8 J6 F3 t x5 i' h2 K0 X
4.6.5 镜像管理 52) x* q; H' i6 n' B1 w" I
" X4 l9 w2 @6 Z9 B- ^4.6.6 使用寄存服务器 546 d# Z5 j2 K8 C# v
& }+ y5 b" ^" m3 W) @; ?" K4.7 总结 55: N; p5 q4 ]% I1 a2 M
" K, y, P0 j; [! }第二部分 Docker与软件生命周期' P& c! R' y" M. W
w5 T9 K1 R: T1 j' i. d. D5 j5 A. f
第 5 章 在开发中应用Docker 59
6 a! p" d! |4 _1 P
7 h% E" _ k( `8 w) @: q5.1 说声“Hello World!” 59
- d+ p% p7 ^) [ O* q3 O) B
- p: J' e( e( y K5.2 通过Compose实现自动化 67& V" P1 {# o+ J# Q/ P/ O
! u7 l0 ^& c; k9 u5.3 总结 69
+ g4 e) P8 u! I6 j% S0 o
- s. S1 X2 K i4 ^7 t+ f {第 6 章 创建一个简单的Web应用 716 T/ f8 k U/ @4 x+ `' J* G B3 f, J
: |( n& F# y9 d5 S% B4 n) Y, ~' T
6.1 创建一个基本网页 72' V0 X* }& K9 h/ i& t
2 @8 R- p) J3 M$ W* {6.2 利用现有镜像 737 U9 ?9 b9 ^! o, @) S+ M
B5 Q& M: Q l4 \' h
6.3 实现缓存功能 78, e+ j# w/ i4 }3 J1 ~) J
- ]( B$ f2 S% q3 Q2 b* L2 j+ d6.4 微服务 816 T$ Q# R9 f; D
% A7 H* B; W0 B% R5 P, H6.5 总结 81
* K2 J* H! ^# z/ Y. r
1 F: `# j& n' B# x' h3 t: s6 j7 \第 7 章 镜像分发 82
$ M1 I6 b* n; n3 }- @8 K, F
+ f9 b# o, t m7.1 镜像及镜像库的命名方式 828 O6 G! `- {5 A! z \
2 D3 y! o1 a# e/ w% Z7.2 Docker Hub 83
) z7 Q" W# B' z; `( F
. j& i) n" Y" J' Q$ O, U% y7.3 自动构建 851 A, U) w3 A/ q# |1 T
4 C) H/ a2 ?6 m! E: T
7.4 私有分发 864 x( X3 |. q( w
1 m& d3 o" ?3 b1 A% z7.4.1 运行自己的寄存服务 86
; o; j5 e* r: a1 E& y! V! O [& [% |2 I3 h
7.4.2 商业寄存服务 92/ v# Z7 x1 U; T' i
% h: ]! v* H; e2 P7.5 缩减镜像大小 923 ]4 p0 L% O5 ]2 s# e- e
1 L% O @/ x2 \) q8 ]$ X7.6 镜像出处 94$ Y1 ~9 j6 y; {' ~. }6 x0 P- D
! e% r) ~: ^! f+ a7 p8 j7.7 总结 94
! ]) l) t: m# m$ j. d5 Z, U: |" V2 T4 V; {
第 8 章 Docker持续集成与测试 956 b' X* r6 `& a0 v8 d! Y. ~
; h5 Z/ a; U) _( ~: E
8.1 为identidock添加单元测试 95
, z- `1 \' G8 p# H* b
' Y2 N7 G5 C! I, G5 C" c8.2 创建Jenkins容器 100
( s; B, V' K0 ~ n+ S( n. A! n+ x% V4 A# f. O: X7 i
8.3 推送镜像 106& E8 t6 c8 U! ~, U2 D
' J1 Q5 f- u0 W' X& k* E0 t
8.3.1 给镜像正确的标签 106. C: i3 [6 }$ t
+ {9 o3 p1 A* G5 {: l8.3.2 准生产及生产环境 108
: j/ @1 b& I5 b) i, \) ~' k) _% j7 ]* A* M7 \; b
8.3.3 镜像数量激增的问题 108
' Z8 S. f6 {. h7 k: `- M1 m, ?$ R
/ P% \) D* M8 e$ r! }8.3.4 使用Docker部署Jenkins slaves 109! h) b1 X- h4 H. ]# z6 I- N0 x
" ]! c; q7 r* [/ `, k
8.4 备份Jenkins数据 109% U, J% r, t, U
+ T3 B& N" |! `5 [8 T ]
8.5 持续集成的托管解决方案 109% I0 G% N: @ k) j/ |
0 D- o. q0 K1 P, A1 h( u& R4 S8.6 测试与微服务 110. l* \5 L1 h1 B# M. v1 r
0 c' y! d) t) i3 S& N8.7 总结 111* g4 B- S, A1 `* ^% I0 }& U- T+ k. I
1 I- ~7 l( c$ P; }( @- v! U第 9 章 部署容器 113
+ w) T1 h( H" a8 H. b& `) y- g5 ]. ?' d# J2 `% B' Q- O! @
9.1 通过Docker Machine配置资源 1140 c; q" f( t* P
& w( p- J& ]. }5 y4 R8 O; p, m5 w0 \9.2 使用代理 117* c9 k) }- `. p5 k
8 f& w F+ l7 Y! y: R8 _1 C2 D
9.3 执行选项 122$ } C4 ^- k% [0 A( a' {
8 X7 p/ A: g, b; z( s
9.3.1 shell脚本 122
: G$ S; L. d v( R5 {# }! \, ^. ^ J
9.3.2 使用进程管理器(或用systemd控制所有进程) 124" r- O3 d3 y0 \, K6 r
, v) v( d1 E; w
9.3.3 使用配置管理工具 127
S" f) {4 V- B, F3 Y) y) K v% A L: h$ \' X2 X% |
9.4 主机配置 130! W; J: Y; \. X7 e5 d
5 o; F, y/ j( j* K0 f: p
9.4.1 选择操作系统 1300 a4 h6 \) I* }# l9 `) I
% j3 q6 u) Q/ t2 @) s5 E
9.4.2 选择存储驱动程序 130
9 G- @' S% L9 W3 e& O; I- ?8 U+ k+ _4 v3 ~3 x
9.5 专门的托管方案 132 n+ |" n; d; C. ?7 a
% U1 L( H2 _" l: b4 r6 A
9.5.1 Triton 132& V2 d, H9 U$ u! w+ E
D+ e! ]6 Z8 W" S1 U9.5.2 谷歌容器引擎 134, H7 v# ?; y( R& |( }8 T, C
7 e) _. ]* w# r7 l
9.5.3 亚马逊EC2容器服务 135, R5 g% b% i7 z9 E9 [ Q
5 \1 M0 m t. F- ~# i7 a9.5.4 Giant Swarm 1364 {9 X" s' n- L- P$ P. l3 I7 r; v
+ g3 w: \2 L# m: n- `* w7 \' v$ y
9.6 持久性数据和生产环境容器 138
/ X. V# X6 A, B/ w T" k8 g4 O+ }- y5 c# H, m
9.7 分享秘密信息 1396 O5 x2 X& ^( I" R, z9 h
7 y- D9 @; |0 s% }# ?! m9.7.1 在镜像中保存秘密信息 139
3 |+ M6 A4 ]) P) S) B& _
. {1 q4 K1 e9 X% `9 \3 r1 l' o9.7.2 通过环境变量传递密钥 139
% f; f5 Z1 N! y
$ X8 p* P" G7 o4 G% o9.7.3 通过数据卷传递密钥 140- ~: Q7 q" ^: V/ w1 a2 ^
: k5 n. u: ]9 P: |9 T9 q9.7.4 使用键值存储 140
( Y$ q. m+ i$ ]4 \5 g0 d/ n' D& z/ N6 E
9.8 网络连接 141
4 p- p3 J! r$ P1 F* d( d. y Q
. P7 l! l6 R9 [3 S+ s* b0 I9.9 生产环境的寄存服务 141! P$ i8 H0 p4 N3 p* o
' F* Y# N! k: H j8 i
9.10 持续部署 / 交付 141
: I! \1 t' b [5 p2 [6 }' u# U# E- `4 w. l( W: {! u
9.11 总结 142" p `! \, z' p, Z) m- {
' N d" q+ O. \
第 10 章 日志记录和监控 143! L) C% q8 ^) h* b3 Q
6 c! }, \8 T5 x10.1 日志记录 1446 G- m4 u* X5 A' q
$ N' `3 M1 y& ]& W8 F1 x10.1.1 Docker默认的日志记录 1440 T) q4 i y6 f+ b
0 q, o! }0 E$ [8 `4 I5 y6 y10.1.2 日志汇总 145, x3 }, L2 f4 G; f6 U7 A
) ~8 O+ n) H) ]9 _! \
10.1.3 使用ELK进行日志记录 146
8 o, Q' x% h/ n l" s% w% E N' f6 C/ B7 X3 J6 B" v
10.1.4 通过syslog实现日志管理 155
+ ]1 q2 L$ r- e' X( C: A4 k% }! j. j' S' W5 N3 X
10.1.5 从文件抓取日志 160
, s, Z1 e; s4 [. G6 o ?, b' S, B3 p& Q1 Z* B0 ?% r" X
10.2 监控和警报 161
6 E; j5 `3 ~, a# d G3 @: Q& V- s% x4 j
10.2.1 使用Docker工具进行监测 161: `$ O6 [+ L P }. K
9 S2 K" Q8 c2 b" q [2 P10.2.2 cAdvisor 162# H; q( o* v: _
2 `: b. k& N6 ]. j
10.2.3 集群解决方案 163
0 o4 @8 C: ^* R+ v9 m
( m) V% q6 k+ ^0 v! `10.3 商用的监听及日志记录解决方案 166! R* f' i: o% ~2 e' d
3 }' q; |7 ?3 P- L8 W' c: R; U10.4 总结 166
# q6 T% N8 z8 b0 a2 K1 }% |9 z* }/ [0 T9 S9 g" S
第三部分 工具和技术
7 E [6 Z& Y0 U4 _
- d7 h7 B, [+ p0 {* F# v: Q第 11 章 联网和服务发现 169, H% J1 q* c' |* u) v( K& z ]
: l- }( ?: v8 l
11.1 大使容器 170
& U+ z- ~# n" |" k) K- U/ c. h( Y9 m9 Z
11.2 服务发现 173 }5 | t0 j$ c* l8 `6 b
! L! g. l0 \* v% }) U11.2.1 etcd 173
% B7 q1 ~+ M. ]- m d
* N& Y9 c/ l, m* V1 m* y# |$ S11.2.2 SkyDNS 177
& l" {0 C( L% q+ |" t; P$ M
# @1 `! ]- Z, `. Z4 B, G7 Z( A11.2.3 Consul 181+ t7 s5 I: M# L0 E: S4 Q. e
* {/ B" Y$ R. ^11.2.4 服务注册 185" Y' f- _' z5 M" S( I7 a. x& A- {; }
( w9 @7 j' g! Q/ q" o1 }" c( M: S11.2.5 其他解决方案 186& X4 X* |. b/ {" E, I8 m; N9 S7 i( _
5 l% ]7 t, J% G11.3 联网选项 1878 {) ?: _/ a/ ]1 q3 C; H) j
& \. p9 q! X" v# n% k11.3.1 网桥模式 1876 Z# @9 g1 ?( L" j" E2 h; y0 }4 X
, q/ C! _" Z2 j0 }# C- K
11.3.2 主机模式 188
# `$ S' E- l' s9 i- B3 @
6 b; d) J: H" }: X# f* M11.3.3 容器模式 1881 K, ?5 L6 b- \/ n* ~- _
2 [7 X! }: c$ ~; ~11.3.4 未联网模式 188
; a1 b6 \ x! M0 v
. |) ?- U- ?6 @: ^( F11.4 全新的Docker联网功能 188
) j0 X+ k& B$ E( [. G/ t0 ^" {9 `! D7 o4 e
11.5 网络解决方案 190, V0 x4 ]5 b( t: X' _
2 @9 y' A* p% d; U11.5.1 Overlay 191: \& Q* d5 V, X5 o2 A: k# k- ]; B) y
; d$ X6 _5 M3 }: M2 I4 T% l
11.5.2 Weave 193
7 H0 u4 v3 O/ o& E3 S9 B l, M' L& I! D7 [$ v) X- w3 V G) w
11.5.3 Flannel 196
: C2 v3 ~. C/ M. J/ ?8 o$ u5 ^
& @4 O( E+ H# P11.5.4 Calico项目 201
( z. p. b; M1 E3 r& k0 U
, M y% b3 r! n' X. _11.6 总结 205
. Z; A5 b. }1 U7 m( w0 ^% Z4 {( _; T/ w6 V8 n
第 12 章 编排、集群和管理 207+ Z7 C$ o% [: X! M, {
5 I% b% Q' k3 g7 @$ u12.1 集群和编排工具 208
. ~/ e/ Y+ ?: M8 z
4 G" i) [0 C; K# L2 G12.1.1 Swarm 208# r8 J- `* f& ]9 l% y( ]
* r- K' S. _( c: E5 ^( c5 A" S E1 A12.1.2 fleet 214
9 W" J4 h9 E! A F7 ~0 @1 d6 n
6 {, M& e3 [/ N, L, r% ~% z12.1.3 Kubernetes 219
7 L) C$ `1 b, B( u/ _/ x' N1 ^8 f- t" i6 j* Q
12.1.4 Mesos和Marathon 226
/ J0 k3 E' J5 l3 C+ b8 O2 Y# g
/ c0 h+ L( M3 z9 x0 P- V12.2 容器管理平台 2357 a9 l1 G; h& j* r
0 `& G0 Z5 Q: `# d2 s
12.2.1 Rancher 236 w- N8 [- G+ U8 p0 B$ z1 f! b+ W1 v5 l
, ?6 z' V( \. B# g
12.2.2 Clocker 2373 t( i( ^# G/ I M; u
1 Q: A! {5 j4 J6 E# v12.2.3 Tutum 238
& D* C( |8 G' X& w8 g# B( W1 X! L8 U# g# c; L2 ^& E$ f
12.3 总结 239
2 {6 ^' H2 p5 ]/ N" W9 i6 R. i; k4 n f* C- V" N
第 13 章 容器安全与限制容器 241
! O5 [! x1 I% v" r
9 a1 a; {1 B2 z: f; Z6 s13.1 需要考虑的事项 2421 `: b9 ^2 f' y6 C( I- j: Q; P
q6 O# { `0 r
13.2 纵深防御 2446 n! L# z1 F7 \ q' G2 v; f0 j, k
" H( h, t; ^: ^( k13.3 如何保护identidock 245* H+ _. j: R \ X0 P% ?; l/ B. q
, a. ]$ a4 F" ^13.4 以主机隔离容器 246
4 x6 s/ c( K5 S$ v! M' n' X! i& O1 v- ` ~6 f
13.5 进行更新 246; c0 }/ ]: j. K- ^0 n
8 j# r7 i& l5 e2 `7 q( K- l
13.6 镜像出处 249
" I9 ]( t2 T' v$ B% {. ^0 ^. k7 z* S, Q, X k
13.6.1 Docker摘要 250
: q! p+ @! U2 q8 q# C$ L8 Y
* T. `' v% w6 d2 N3 @5 w% q13.6.2 Docker的内容信任机制 250
: b. m2 u- g! S: v) |2 E9 U1 `+ e* `' ]. o% _
13.6.3 可复制及可信任的Dockerfile 254
6 ]$ i6 p% x& s- _& b
; `- q3 P" o6 A13.7 安全建议 256) b1 {& `- O1 Y0 e
3 E P) e( j' m9 S' b+ `, m% I
13.7.1 设置用户 2569 m/ p% i# R; J7 o1 `' T
$ w6 {) |1 G5 t% ~0 P4 s; f( t9 z13.7.2 限制容器联网 2577 { B& Z" U4 C% O
* N* q9 |, R/ l( f1 m! ^/ Z
13.7.3 删除setuid和setgid的二进制文件 258
) v5 J: ]. r k/ B
. ~3 Q# P3 k: Q13.7.4 限制内存使用 259
6 I. X) L, U+ c" ~' A+ I6 E; x. h, e
) _8 J$ i/ V3 N13.7.5 限制CPU使用 260
3 J) n2 C/ [9 @5 Z7 J" g# i% i" J ]
13.7.6 限制重新启动 261
+ g3 a7 }* u, @! ]' F; T2 [1 j) m' l! J7 T; ^7 |
13.7.7 限制文件系统 261
1 g% \% D) y6 s' f" X2 S8 }9 v% J% m/ @! v3 k
13.7.8 限制内核能力 262% U4 x) ~0 y" ]. `& J) K- r
, {/ y/ T- Y* v2 u13.7.9 应用资源限制 263# N8 I% L# f* y5 _# @& d i
) I1 v1 @' E) x% s4 J3 F* i13.8 运行加固内核 264
0 _) }' Q4 r1 C% J3 b5 L$ r" }& J, B& ~/ }& [, Z' c
13.9 Linux安全模块 2657 S/ l" k2 }: Q# o; t% u
5 f3 ^9 T' ?# j" f
13.9.1 SELinux 265. q" P8 V& x% }; L( A2 N' o
) {1 x$ w( v, x1 j, L6 o0 W6 n
13.9.2 AppArmor 268
]: B N1 c1 S% E4 P) _- M% D# r- u9 l7 H5 O5 L* ~
13.10 审核 268, I- K) P* |; Y4 m3 b' O
* F$ n$ J1 s h9 E( M' @4 D
13.11 事件响应 269
& u; _& _! N' i" _ d" {
3 M2 l6 ?1 j G7 D* b2 h13.12 未来特性 269( t% C3 }' U- k) o* G2 s
$ C: `! f0 `( F6 u: [
13.13 总结 270
$ m" Y( S9 o" P) G
% l* j7 y. k; M& n& A, R3 L5 f/ t作者简介 2715 q) v2 b5 D" ~$ x& O$ [
/ C) l, h! U- A; s: T4 g, D7 Q
关于封面 2710 q7 `& P# I2 R Q( H1 V/ g0 M/ f
百度云盘下载地址(完全免费-绝无套路):
& k2 l) t( S4 c; ~& I |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|