|
Java电子书:Docker开发指南 格式 pdf 电子书 PDF 电子书 Java吧 java8.com
Y) \" M: z; N6 U4 X0 {; w0 _. x1 i6 e1 G! _
9 D' f2 ]2 O# @( C( ?# d
编号:mudaima-P0259【Java吧 java8.com】3 J+ K4 C* q- Z D) v* u
7 A! T( M; j4 [2 k; h: D' M
% o/ @+ @6 w1 N8 G
* D8 T+ ?) H& W9 ]* l" N
Java电子书目录:前言 xi
0 {3 H" h6 W* o( m
# Y- N1 K. u( H0 V6 P ~' Z ]/ }部分 背景与基础+ @2 ]. w* z/ z! L! V# _
( ?! ~6 U z7 o% q2 x! ?& R1 ~
第 1 章 何谓容器,为何需要它 3: m' C3 ~) x {
0 G; j2 K' \+ P, y) \! p) E1.1 容器与虚拟机的比较 4
1 A& x o6 c r5 m8 z$ T
3 z: q1 c# h" [5 L( ?' v9 Q1.2 Docker与容器 5
# I' a# x- N3 K' o- a4 M, P: @3 n; j, ?7 C6 h' x1 ]: R! g
1.3 Docker的历史 7
+ A- R. G" T$ j5 {4 H
+ G2 s o* Q& g. c1.4 插件与基础设施 8
' W$ {. b" h* ?1 _' q$ q" p+ f
/ i. P P3 e' q4 G3 \: Q1.5 64位Linux 98 G3 e: G) u7 q3 @$ b% P4 H$ j
0 O5 L' D! v4 H, g: N
第 2 章 安装 10
8 k2 K3 k! i2 I1 E. C, I J/ ~+ t4 o$ \0 i6 s+ ~3 p0 G! y; I
2.1 在Linux上安装 Docker 10% p! N# C. Z+ I% b/ `: h% v7 {8 C
% Z* h9 }' j& w8 e2.1.1 将SELinux置于宽容模式下运行 11
/ m+ x' d/ [7 X; a9 |, K- `: Y
2.1.2 不使用sudo命令执行Docker 11( v1 T3 n. y. h+ r
/ j% X4 J, F2 C7 R2.2 在Mac OS及Windows上安装Docker 12: I. u5 ^% p) K) Z
! g/ Q8 T7 D! G' _8 m( D. S
2.3 快速确认 13
' Z4 t! p) t/ N. D7 X3 {# w$ F7 L1 n' d/ n9 b. V5 Q6 h
第 3 章 迈出步 15) e6 a3 j0 e3 P5 D6 c( Q6 j7 y
0 H8 J" E5 z! e6 N- N; c' K
3.1 运行个镜像 153 U$ x9 z0 ]0 p8 ~
1 b# t) {+ {0 a3.2 基本命令 16
; |/ d* S/ W2 ?7 C z5 P2 A2 l9 g# w' }( y$ @! v! e
3.3 通过Dockerfile创建镜像 20
+ ?7 ?: u* ~ k7 v5 \- c4 Q" S- T# c' \. j" C
3.4 使用寄存服务 22# L: p& _- `- P, }3 ]( ~ b
5 |# @0 y5 @# z i3.5 使用Redis官方镜像 24. u6 O- j( s4 y; @( W4 m* n7 e
* \3 _6 R6 n; y Y
3.6 总结 27% R: K8 _: m( B
# R# z, z: g. C' z% h第 4 章 Docker基本概念 28
' _) R0 W2 F, c- w7 N# g$ T K
. m- [# ]/ ] b% Z4.1 Docker系统架构 28; d6 x% ?9 |) x% y! `: ?
" B! C" w% S8 }7 e
4.1.1 底层技术 29. N% w4 i5 X+ o# Q/ Q. p# @
9 i) N% D$ o; _8 F6 v/ _4 B
4.1.2 周边技术 30
' O) {, @7 t/ R7 u% M: @' I5 P* W9 ^
4.1.3 Docker托管 31
! j3 L7 ?9 i, N/ N" S6 G) D$ t; a' S
4.2 镜像是如何生成的 32
- z' k* @, _& i& J( d7 K
9 ?: l# L) ]8 A! R( v4.2.1 构建环境的上下文 325 N" r' h" k# B
2 M9 I4 G& r0 M. \5 L! |$ c2 R
4.2.2 镜像层 339 |9 v/ z7 t9 y# _
+ H; t1 w( s2 X1 c5 r0 x4.2.3 缓存 358 l; a1 B3 \' j6 k6 {- z
! U' E$ L7 j2 e& E4.2.4 基础镜像 35$ \0 L2 S% L' u2 E d7 \/ k$ j' a" B
# X0 B6 Q$ q7 _# _4 U4.2.5 Dockerfile指令 37/ S9 e6 F6 U4 ^! f
* r$ ~, d8 G* P) }" D7 `4.3 使容器与世界相连 39. N7 o8 {/ T3 o5 g" ~ ~
- ]' T1 P5 H2 S# P4.4 容器互联 40+ R. q) t- E$ j" U) T
/ e! h4 w2 f# g* T2 i4 N4.5 利用数据卷和数据容器管理数据 41
4 d0 p0 k' X+ p) l0 c5 g2 c, A w: f Z) s. B6 I
4.5.1 共享数据 43
* _. n/ Q9 n+ T; S/ s o. P- I; W, W0 g' K
4.5.2 数据容器 44
; S# Z7 _) h) G- V m; c0 j% W6 t; s4 A: x, I
4.6 Docker常用命令 45
! | A6 e+ O0 @# J
" @' C" K7 `# h7 Y4.6.1 run命令 46
+ |6 Q% ?5 Y& B7 \& F, A' S! v: C* W9 ~$ M' @0 C5 ]& H: A0 G
4.6.2 容器管理 484 u z* ~( c# i3 w9 K. M$ H% K K
* ~9 O3 p! r* _4.6.3 Docker信息 50/ x. P3 U' z: \: a
, P5 A- E% w1 _6 m$ c4.6.4 容器信息 50
8 W8 D* U) t% a* e8 S& w4 N$ c
; Y' K# ]/ s; _, B4.6.5 镜像管理 526 x9 q# ]) `) u9 _- j
! [' L. X0 ^+ U9 p/ c0 a4 b4.6.6 使用寄存服务器 54
! }5 E& s( t, B; l5 Z5 i6 m+ u7 E G% |) R& \
4.7 总结 55& ~ X/ `/ H% b6 t2 {$ \
6 d# C" ]% L0 n# X2 y1 w. Y第二部分 Docker与软件生命周期
$ K. H. x: y# f% _# A, T
& t" ~, l4 U {7 y U第 5 章 在开发中应用Docker 59% G3 C% Q9 } ~: Y g8 l
* o5 s0 W0 H5 t( A3 @; y5.1 说声“Hello World!” 59
# S5 J/ y' R! P; B8 J( @" ~+ ?% G. e8 J% _. e7 Q
5.2 通过Compose实现自动化 67
: A& S! E5 c2 Z! g$ P ^9 `4 D9 d* _$ x1 Z- a. p3 Z
5.3 总结 691 M4 y# @ F& n2 A+ q/ j
j7 X* m6 t$ ^) O, v6 y第 6 章 创建一个简单的Web应用 71
/ a8 x, G+ s/ v T* u) x2 m& n8 P3 j/ B& P
6.1 创建一个基本网页 72
$ n) e5 F+ Y1 w- p) L0 }
2 v/ X2 y0 H% w4 p! ?4 d7 a6.2 利用现有镜像 734 B8 @$ C/ O+ m0 p
* R7 D6 w% q& e. d6.3 实现缓存功能 78; g7 q; B8 q" N
2 K6 ?+ q- e$ e2 V. t6.4 微服务 81
- ]6 u0 B t" ?" f% C
! I) D( K/ c0 t; ^6.5 总结 81
) \( I& g% `3 ^1 g! N Q, ^& u: l3 u6 t
第 7 章 镜像分发 821 g0 Q1 k' z" V& k, a
2 V1 E0 x3 ]* r5 W/ ]+ x# w
7.1 镜像及镜像库的命名方式 82
- a+ F8 |/ G/ N: i2 r( c- X- k
; n% j; J$ q5 b1 q7 i6 S7.2 Docker Hub 83% S& v, M3 a# k1 V, k6 y6 ^0 d
( ~) y" o) S2 Q Q7 |
7.3 自动构建 85
. `' |! x' S; R2 h5 `" H+ V9 G! c7 M
7.4 私有分发 86
; E: ?$ B y6 @ ^- H
- `6 o, ?$ N' D& \& J- a% @7.4.1 运行自己的寄存服务 86
; z. s! l( H5 u$ o$ V% x( U) L% y' t3 t1 S* k
7.4.2 商业寄存服务 92" @" S5 }" x9 W5 X' L8 s
: f# D5 j8 n0 B7.5 缩减镜像大小 92
8 [6 H& q3 v) v: G
' _9 n( r: Z6 M( o6 b( j7.6 镜像出处 94
7 ]5 L0 ^( H5 ^; {, ^! E% ]; y! z$ Y# p- O% y
7.7 总结 94( X' V, P- G3 M. K, G
0 }! r8 F0 }! S# q6 A$ V
第 8 章 Docker持续集成与测试 95
, a4 W, D% b- {
5 G* t" E3 B' R. ]3 [8.1 为identidock添加单元测试 954 L+ r* w2 P* y: z
" u, [4 |$ w {) z5 [. g# O) A% L8.2 创建Jenkins容器 100
2 T0 D5 }" b. y `8 ~3 b: I( i4 g" m
8.3 推送镜像 106; I+ d t1 Q5 q$ y/ x
) G8 k7 T- X4 U5 j' _6 ~8.3.1 给镜像正确的标签 106
' S) o3 W; F3 z3 @# G6 H; t1 a$ ^# P/ `8 k/ w4 n
8.3.2 准生产及生产环境 108
3 [5 t3 X# h# [ T+ ~
% f3 G/ a3 N; T5 M* n+ m6 ?8.3.3 镜像数量激增的问题 108
$ j# w1 [3 t% b: k8 B2 c- |" U: r r5 A& V* I7 c5 v( I5 Y
8.3.4 使用Docker部署Jenkins slaves 109
1 U4 N5 C! h; v. g' c! T& n' S2 D; w6 B( }$ W$ U. k5 \
8.4 备份Jenkins数据 1096 T& G7 e5 q' |8 a
9 V) j9 w8 n4 }* y2 @: Q! @
8.5 持续集成的托管解决方案 109
" o* |+ K/ g9 d0 D/ e2 W
& M+ ]7 j# c4 q+ u/ [: v8.6 测试与微服务 110) S7 R# J9 _* U/ `- ~+ D2 \
* P; c% v; ?9 z, x
8.7 总结 1114 R% Q8 ^) [/ `! F; j! {
2 I$ c8 D4 {. p+ N第 9 章 部署容器 113
% B- i0 T8 I0 p+ W/ t' y2 [1 H+ P1 ~; A G
9.1 通过Docker Machine配置资源 114
/ k. p' n: J; ^" w- S
/ \& H, `/ n2 c$ j1 D4 I4 \$ A9.2 使用代理 117
, g; Y$ S! A. I# T: k0 Y. L) C5 P5 l6 g
9.3 执行选项 1226 ~# H8 B# \6 [) u2 q
" H/ |8 r: A2 x0 \
9.3.1 shell脚本 122
' e: |: B; ]7 q& |5 n
4 w; y" d5 {- |4 a2 r9.3.2 使用进程管理器(或用systemd控制所有进程) 124" K5 _8 c4 F0 W( F1 ]4 u3 A8 k0 p
* A; M1 I9 ^% D, Z; A
9.3.3 使用配置管理工具 127
* y- \4 {; A( V
3 o/ a7 {. k, j5 t* E+ ]9.4 主机配置 130! d& }8 z! S# Z5 }$ F) a
M; Q. c" O; `, T" l6 S* c. q
9.4.1 选择操作系统 1309 W( m: g( q! Z+ u* C1 v
; U$ S- j. r+ N4 R
9.4.2 选择存储驱动程序 130
" [% f7 e0 `8 U/ G+ m
: a& C. `8 y1 [' b1 e. m9.5 专门的托管方案 132
. E' Q4 `. u8 d2 J( v& Q/ q- z4 t4 v; p
9.5.1 Triton 132+ [5 Z- n1 h4 L0 B, V$ Y- D7 x8 R
% @ K4 P9 v( m! Z [) i
9.5.2 谷歌容器引擎 134- n; f/ {- ?% }$ s- ~6 E' e) X
7 s% {+ k$ l+ |) m+ e
9.5.3 亚马逊EC2容器服务 135 v5 [& ?* d6 U1 s. Y* q( Q% F4 m
! k; u# }+ K9 h: [: i! l0 k9.5.4 Giant Swarm 136
6 ^. W% k. U# _; y3 a7 \+ F
, d, F, Z; ~% l" M% N9.6 持久性数据和生产环境容器 138# ~% }$ Z) g; ~* q" a
! A* F+ l/ R6 H6 F( n9.7 分享秘密信息 139) o, a; a: V; v
. @- u- l" }+ j \' I! J& } P( t; S9.7.1 在镜像中保存秘密信息 139
9 j. [6 t' A$ I* v8 d2 ~
# K: l6 @5 O" P3 }1 d" _- [9.7.2 通过环境变量传递密钥 139$ G2 C5 \. J, m$ a6 f9 I
! h- }! }- y) J, E: d' t% r1 F9.7.3 通过数据卷传递密钥 140$ K) J7 h2 ^# G7 c! t
; j( ]/ c4 I: B! `5 |1 ?/ t
9.7.4 使用键值存储 140; L, B' ?( q9 |6 p/ ]5 I/ c* D" [
6 k, i- S( I6 x( L) n- C" h1 T' n
9.8 网络连接 141: j- I2 s1 A; p1 U9 H
' Q0 c) c- N# v4 b
9.9 生产环境的寄存服务 141
4 X7 x7 l5 e* z3 r( C
/ T p+ D' y2 c& j, k5 ]7 j9.10 持续部署 / 交付 141
6 R, T5 q5 U4 U# P; n1 i% r" C2 l9 |4 _ b) z2 A1 k# n
9.11 总结 142; ?, ~& P4 M; y. D2 x. A3 j) g
' j' L+ N, T. y第 10 章 日志记录和监控 143
' L: n) h/ E5 h9 c1 O7 b0 [% t6 ?$ w; y& n2 R0 N( X" U) M( l+ P
10.1 日志记录 1445 Y2 Q1 N# @! i7 p( I
, h4 R* b5 E5 h/ r, p
10.1.1 Docker默认的日志记录 144
/ s! ^4 W5 E2 T' Y. [
, U" S' E; T' D$ Y10.1.2 日志汇总 1450 P: U! D5 _. }. R8 r
" e. w' T; x+ t4 Y10.1.3 使用ELK进行日志记录 1461 E4 t! ?* o. H* \. g
) u3 \3 [2 |8 C9 e: r0 d, Z2 r2 ~) ]
10.1.4 通过syslog实现日志管理 155
3 \: X$ j( H; H0 _* x1 T- E- J0 t* L, _! O( E, a8 o
10.1.5 从文件抓取日志 160
: Q1 o" w2 j/ ~& \
4 j; u) Y" z% h' u u+ q, m4 @10.2 监控和警报 161
3 A7 U8 e" J: Q9 S; n8 V1 }
2 a S; n/ J {$ L3 h: U' O) D10.2.1 使用Docker工具进行监测 1614 l. I: X" h. ]: t0 G4 n
* U" s4 V! s1 E3 ]7 ~+ H5 q10.2.2 cAdvisor 162
& G1 I* B5 L$ C( b
' P3 R8 W& q$ G7 x# {! `5 [, e6 T10.2.3 集群解决方案 163+ s" }4 h- {- \0 A8 Y6 W
, l& T# G& }0 Q# {; {- I+ e
10.3 商用的监听及日志记录解决方案 1660 o# N. j! p7 I' j
. F3 i4 M5 z9 O, K10.4 总结 166 d2 o6 A- B3 a5 g! F
2 D0 n3 w5 R" k第三部分 工具和技术
) ~" }9 W- F3 u+ B' y
2 Z. _- l4 p0 n+ L+ s第 11 章 联网和服务发现 1698 [/ O# V* g0 B* y5 J& u
7 O8 H0 t6 v8 q' M11.1 大使容器 170
! E8 Z3 |0 n8 }0 K: h2 I
( N8 \- {6 J* t$ O11.2 服务发现 173
/ ?# |8 P: M' T8 r5 l$ t4 ]0 w. Z
! f. n6 Y3 j2 e4 m# A11.2.1 etcd 173
% @" ], d& F i& r3 n* U9 D- _3 {6 ]( q: S; c. [
11.2.2 SkyDNS 177
0 [8 ^. U8 X, U# ]1 O
6 r9 a% {7 h( v! {! O. A- ^3 f; p% f11.2.3 Consul 1816 M( g6 n- K9 z0 f6 I8 M
6 J. Z* h# s4 |% w5 T; ?11.2.4 服务注册 185/ l! _/ h: y* M3 y8 w, f( [7 D: t. l
7 G, D" W+ C5 u3 l" ?, q11.2.5 其他解决方案 186
7 x, C- T5 \8 g' ]1 A5 T, ?* y. e* f' q
11.3 联网选项 1874 M: Z T6 q- Z
- r, K8 p+ B, n: Y; C
11.3.1 网桥模式 187
. ^6 n4 k; ?1 ~) e
: L7 l ?2 j: P: \6 E11.3.2 主机模式 188. _; }: r5 C% ]6 m" y4 L! T
- V9 J9 t( I7 }0 q& Z' _+ B4 _% k3 w: L
11.3.3 容器模式 188
: J% j7 j# c* x1 S. u
# o) O' s. w& Y% y+ C" @! p' B11.3.4 未联网模式 188* J1 w; J; r7 K
6 U; r3 E: K9 W4 t11.4 全新的Docker联网功能 188- J( D8 q# k2 z/ j5 I1 T5 {
/ K; Q6 S! `* ?; v. T11.5 网络解决方案 190
3 Q0 Z& P7 g5 u4 x0 _, T$ J; q- {/ e- |& F1 b
11.5.1 Overlay 191, O7 c$ ~% f% `
' B/ t1 ^0 H. y3 T# g2 ~
11.5.2 Weave 193
3 e H! d0 h. W5 H
/ [. P$ Q8 @4 Y; _8 Y/ m11.5.3 Flannel 196! K2 h' }5 D- f5 D/ H
$ B; I) r1 `3 Z, T9 J$ s- f5 `' n- l
11.5.4 Calico项目 201; [4 M" T- u$ ^
9 t0 @9 D z8 t, g5 [
11.6 总结 2058 |7 t8 |7 P0 `: }( }) `$ j
' t/ K; z; k1 ~7 C: Q第 12 章 编排、集群和管理 207
/ o1 |/ U) e0 l( I
7 @/ H+ ~; Q0 p: x6 w12.1 集群和编排工具 2084 j" }# W' B# ~" E$ F( ^
$ B3 E% c/ u/ _12.1.1 Swarm 208& c6 Y6 Z% s8 X2 B- s- [
. r. a4 N8 W" w0 |8 A
12.1.2 fleet 214
% W' V7 Z& k) i, y( w4 @
3 \! S; S2 P! a: V12.1.3 Kubernetes 219. ^* z2 B1 W r. p
8 p/ l) u! K- X' ~! c4 x- t
12.1.4 Mesos和Marathon 2264 Y: z8 Q: m$ X8 L! u0 A* n
+ g& I9 F6 g6 G% r$ Y
12.2 容器管理平台 2359 x' Q/ {+ _- o+ J
' p; W5 d8 Z$ L7 W; S" b12.2.1 Rancher 236% O6 q/ e7 R' G/ | ^0 I
0 P2 Q4 d$ [' h' O- [
12.2.2 Clocker 237' Q( [# }" P% z. B* P
) K4 q4 a* ~! W. f12.2.3 Tutum 2388 f+ L ^* o+ j. o7 U. _+ R$ B3 ]! \
! ?5 ^+ k1 s0 R4 z3 d8 }12.3 总结 239' F9 W! e2 _* l6 \
; W! ~1 _$ a) p1 F第 13 章 容器安全与限制容器 241
& h+ \4 Z ?3 W/ h3 v% r! s* \" N$ {: r
13.1 需要考虑的事项 2424 E" n' i) H7 I
+ |" T; M1 V% D' { ~8 q2 H. s& d
13.2 纵深防御 244
! V& z; i; H2 p/ T# R0 t$ r4 F2 D) u
2 D I. o' f3 u* [13.3 如何保护identidock 245
5 Q9 e, F1 V# I+ c
* b- ^# W2 A$ P7 w, u2 z13.4 以主机隔离容器 246
" W$ h9 ?7 T# x6 W I7 V/ b" K8 X
; n) q% n; j6 ^( r# `+ {' B5 i13.5 进行更新 246
* \' K, a! ^; {' \+ {: X6 y5 v1 F h: m. O
13.6 镜像出处 2491 v- L$ t3 K6 E0 G, a
, a6 {: n9 v" y# c7 p& k
13.6.1 Docker摘要 250! z. c7 ]' ?2 L* |
7 A1 i6 K- s' ?9 ]- |% G13.6.2 Docker的内容信任机制 250
% }7 |$ k7 d/ p7 p- y# |. i5 l. F; a4 v) b5 i4 S9 }4 L, x
13.6.3 可复制及可信任的Dockerfile 254
" R5 ^* T$ ]" D5 O: E9 O
. |8 ?3 ^- M0 A L/ [+ p13.7 安全建议 256
+ B4 h0 `9 M- X j, a
) B3 V8 j- k) q3 \0 e/ B8 R5 l13.7.1 设置用户 256
* \' E6 s: n$ K4 U$ c5 h2 M8 K+ a, i2 o# \
13.7.2 限制容器联网 257) m( ]- ?3 a: P! |( V% k
- n, O5 `, u" L( S" a% z13.7.3 删除setuid和setgid的二进制文件 258
* D1 A. k) }! p/ f; ]+ {5 [7 ]1 }
13.7.4 限制内存使用 259. m" i6 x- i% Q( o7 g1 ]. N4 l
6 O! X! R. Z- Z. E; ^ a# e4 N13.7.5 限制CPU使用 2606 i% a8 X5 y1 D) Q2 N; `2 y
& |( J8 b/ N) K) P W
13.7.6 限制重新启动 261- l) J. [1 ?, @( Y
& D: ^. o0 U1 C2 O13.7.7 限制文件系统 261
& n! x& d7 q9 w6 M
7 r4 j# p; R8 J E( F) Q13.7.8 限制内核能力 2625 v+ r6 q% d6 D' C0 C. K
4 `4 R% @9 g( a, @13.7.9 应用资源限制 263
! ~. ?+ F, A1 n( V0 b. w+ w' w
13.8 运行加固内核 2646 M; C8 E" ?- A6 H) c {
% I: P# r( G( u$ K
13.9 Linux安全模块 265
, K- E0 } p, B2 `' N7 S3 N4 G4 D8 y. f, g9 X/ W' z1 m) }# S
13.9.1 SELinux 265
4 E1 O" ]7 \. P* ? E) ?& |* f
/ J1 X5 K( W7 Q* N13.9.2 AppArmor 268* Z9 h& r; ~ Y( I* ?, I$ j: ~
5 p) [: v3 L0 L- d3 P+ M
13.10 审核 268& V8 E% I) s0 L# x: q/ ?
$ z2 v% @, q' z
13.11 事件响应 2694 `, L( R9 O( c; E: T& H
- J- Q( w4 |4 ~2 K, n! s4 E
13.12 未来特性 269: F* ?/ I0 s+ g) I2 S
8 P2 m9 Z8 D- P9 l! b0 Z2 J7 X g# ~8 t
13.13 总结 270
3 [8 E3 }# U7 P+ o, _- P$ n7 V5 I4 }% n- {% s y6 K. A
作者简介 271
) r0 [. [. ?7 i) L/ r4 P/ x9 H1 g- d' a* w8 u4 g7 X
关于封面 271
2 _/ M- I- Z7 i4 D. v1 A百度云盘下载地址(完全免费-绝无套路):
4 L0 v! K1 m8 j/ K2 v |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|