|
Java电子书:自己动手写Docker 格式 pdf 电子书 PDF 电子书 Java吧 java8.com# E* ^: t3 x% X
+ ]: h. [7 s' E0 t3 S4 A( Z
" p: i9 j# y6 D b: p编号:mudaima-P0260【Java吧 java8.com】+ t7 c) A+ b j1 Z
+ F. V ?; ^! ]( C
% g! {; {, c `, p* c* V6 R
, d& L/ x2 ~3 g8 j3 ` CJava电子书目录:第1章 容器与开发语言………………………………………………………………………1, y d' W$ C; P! p1 d3 b* L( O
1.1 Docker ………………………………………………………………………………1
0 l8 S9 G) O7 O" T5 _0 _1.1.1 简介 …………………………………………………………………………15 p8 X7 _+ T3 b1 f | [0 s
1.1.2 容器和虚拟机比较 …………………………………………………………2
n: [8 v# W T5 o8 K8 V1.1.3 容器加速开发效率 …………………………………………………………3" ?- ~/ N( ]6 t2 L' ~2 t1 L& X
1.1.4 利用容器合作开发 …………………………………………………………4- H# \$ p: W8 {% Q; q2 W- E
1.1.5 利用容器快速扩容 …………………………………………………………4
2 m7 j* t4 q" j: D5 Q- ~1.1.6 安装使用Docker ……………………………………………………………4 D5 S) o. |! ~1 q/ a5 D
1.2 Go ……………………………………………………………………………………5# B0 `# |: e. ]8 [
1.2.1 描述 …………………………………………………………………………5
2 a- i, \6 Y( W: ]" r1.2.2 安装Go ………………………………………………………………………6; ?' @7 R) s+ p# b i4 m/ I
1.2.3 配置GOPATH ………………………………………………………………67 U5 ^8 D4 |2 s/ ~" |3 k
1.3 小结 …………………………………………………………………………………7
' \7 K/ |, c2 V' B第2章 基础技术………………………………………………………………………………83 O: e8 x( o0 Z, J8 d) B8 k
2.1 Linux Namespace 介绍 ………………………………………………………………8
( L' F2 m/ b& l0 W& d# h2 f. H2.1.1 概念 …………………………………………………………………………8
4 R0 Q4 i# G6 k8 {3 O1 R8 r/ L2.1.2 UTS Namespace ………………………………………………………………10
0 t7 ]$ K, i1 o1 l2 m. \- d, t2.1.3 IPC Namespace ………………………………………………………………11
' a% J, G: e: d2.1.4 PID Namespace ………………………………………………………………13
3 u& [ o$ ^9 A# n- Z8 r2.1.5 Mount Namespace ……………………………………………………………14
2 A9 V1 D. R( g7 H0 W# A2.1.6 User Namespace ………………………………………………………………16" `5 q& [; Z* g R/ y5 q
2.1.7 Network Namespace ………………………………………………………… 184 u% f# ]6 W& r% n( D3 X2 U$ _6 R
2.2 Linux Cgroups 介绍 ………………………………………………………………… 20
7 b W2 u3 m; o0 U2.2.1 什么是Linux Cgroups ……………………………………………………… 20
+ f, O3 g* G" [( w' w& P2.2.2 Docker 是如何使用Cgroups 的 …………………………………………… 24$ V) d$ N6 |# p! O
2.2.3 用Go 语言实现通过cgroup 限制容器的资源 …………………………… 259 o& }! W+ e' x3 a' c
2.3 Union File System …………………………………………………………………… 26
+ m+ X: _, t) O2.3.1 什么是Union File System …………………………………………………… 26
o9 v, _) B# H4 o4 S: j2.3.2 AUFS ………………………………………………………………………… 27( C1 d( i- ]0 Q
2.3.3 Docker 是如何使用AUFS 的 ……………………………………………… 27, w# O5 ^. U p J' i2 J
2.3.4 自己动手写AUFS…………………………………………………………… 348 q1 b; n) Z) |' y- \; K
2.4 小结 ………………………………………………………………………………… 37$ `* k9 N, t% X6 M# N! R
第3 章 构造容器……………………………………………………………………………… 38, D8 W; c+ _6 g
3.1 构造实现run 命令版本的容器 …………………………………………………… 38
2 f" }, t. |0 J; f3.1.1 Linux proc 文件系统介绍 …………………………………………………… 38
X* x9 {' X7 ?1 j2 ~( R3.1.2 实现 run 命令 ……………………………………………………………… 39
: W6 k! Z' w6 h4 f# X3.2 增加容器资源限制 ………………………………………………………………… 45
+ f" z, c& {3 @4 h+ Q9 y- r3.2.1 定义Cgroups 的数据结构 ………………………………………………… 45
( G- b C; q0 O/ l* a3.2.2 在启动容器时增加资源限制的配置 ……………………………………… 51. ]8 g. ]- H; {# C0 I3 a
3.3 增加管道及环境变量识别 ………………………………………………………… 53# P) r7 E& L2 @2 K6 Y5 {
3.4 小结 ………………………………………………………………………………… 580 M0 C f1 Y# U
第4 章 构造镜像……………………………………………………………………………… 59
( O% ]: N, P: q/ S E9 Z8 T2 u% @9 N4.1 使用busybox 创建容器 …………………………………………………………… 59- h7 Z! m: V) L, D
4.1.1 busybox ……………………………………………………………………… 59" O% _/ E8 H* O" Z$ I$ {
4.1.2 pivot_root …………………………………………………………………… 60
7 O: K6 [. ?; e7 \, E1 r/ {' p4.2 使用AUFS 包装busybox …………………………………………………………… 636 C9 x8 `. y6 ?* z! v
4.3 实现volume 数据卷 ………………………………………………………………… 67- F6 t/ ?3 \: W5 L2 m5 Z7 r
4.4 实现简单镜像打包 ………………………………………………………………… 75
& t5 o8 Q- B9 D& }- M: E4.5 小结 ………………………………………………………………………………… 779 [) T* Y7 F, U
第5 章 构建容器进阶………………………………………………………………………… 78
+ ~! m* \$ \8 U8 @+ R) Y* n5.1 实现容器的后台运行 ……………………………………………………………… 78( j9 j' M( v" ]0 g6 u4 l) l7 j
5.2 实现查看运行中容器 ……………………………………………………………… 82
5 J0 q/ c5 y s; [, e. _5 _5.2.1 准备数据 …………………………………………………………………… 823 D/ D# O9 [- N& f1 ]. Q
5.2.2 实现mydocker ps …………………………………………………………… 87- |$ D5 `5 s0 ~5 p. @9 p( Y
5.3 实现查看容器日志 ………………………………………………………………… 90" X; O% e# u$ z) d; Z" A
5.4 实现进入容器Namespace ………………………………………………………… 935 Q6 A0 |8 _7 a c
5.4.1 setns ………………………………………………………………………… 94
) e. ^0 D* u' u3 t0 ]5.4.2 Cgo …………………………………………………………………………… 94% s) R. s' \) ?" k$ M4 Y
5.4.3 实现命令 …………………………………………………………………… 94
' A; D$ v/ N( E8 k5.5 实现停止容器 ……………………………………………………………………… 100
5 G! G r8 l5 J( G9 Y% j# F5.6 实现删除容器 ……………………………………………………………………… 104
: N8 W+ y1 v; j% i5.7 实现通过容器制作镜像 …………………………………………………………… 105/ J/ F% S' B7 R1 U* J
5.8 实现容器指定环境变量运行 ……………………………………………………… 117
# ~3 C- i" @! u/ w0 D5.8.1 修改runCommand …………………………………………………………… 117
) r$ j+ x% x+ s8 u) V+ x! B* _+ z% v8 [5.8.2 修改Run 函数 ……………………………………………………………… 117
, ~4 l* ]4 d! v4 y4 V6 D5.8.3 修改NewParentProcess 函数 ……………………………………………… 118* d2 Q# x z* d/ i# I& a4 Z
5.8.4 修改mydocker exec 命令 …………………………………………………… 119
! b+ m" n3 z& ~! z3 Z. C5 R5.9 小结 ………………………………………………………………………………… 1212 V. S, F F. v& W4 \; ~0 u$ G
第6 章 容器网络……………………………………………………………………………… 122
2 W- O! J+ J2 d8 p: u6.1 网络虚拟化技术介绍 ……………………………………………………………… 122
4 M! N; F: }/ Y/ Z6.1.1 Linux 虚拟网络设备 ………………………………………………………… 122
0 |* H F, \+ l3 F1 j, F! w# @6.1.2 Linux 路由表 ………………………………………………………………… 124
) C4 w* H, A0 v; J( N7 W6.1.3 Linux iptables ………………………………………………………………… 126- @2 f- C# B/ H& L8 A. T
6.1.4 Go 语言网络库介绍 ………………………………………………………… 127
! h1 h) ~- P# T6.2 构建容器网络模型 ………………………………………………………………… 128
4 R; `4 F9 D- m1 d! Y* U' }% q9 j+ x6.2.1 模型 ………………………………………………………………………… 128
: r: t _# p6 o8 O S6.2.2 调用关系 …………………………………………………………………… 130
& H& ?/ C, ^: ^, ]6.3 容器地址分配 ……………………………………………………………………… 137
0 L8 G) l# Z5 p0 F+ g( f+ l* X6.3.1 bitmap 算法介绍 …………………………………………………………… 138- e z5 Y8 C# j) R5 M9 v5 y( A7 A
6.3.2 数据结构定义 ……………………………………………………………… 138
: l5 J6 { ^5 A% V8 `6.3.3 地址分配的实现 …………………………………………………………… 140) \0 t/ O$ H( @/ }" K, }$ }+ E
6.3.4 地址释放的实现 …………………………………………………………… 1428 H0 _" I/ l+ Y5 t
6.3.5 测试 ………………………………………………………………………… 142" c- w6 n, \: T8 O9 x
6.4 创建Bridge 网络 …………………………………………………………………… 144
) @6 l& ~$ C. q7 I# L* ^6.4.1 Bridge Driver Create 实现 …………………………………………………… 1442 |- j7 L" x1 i3 M' C% M; r1 V2 v
6.4.2 Bridge Driver 初始化Linux Bridge 流程 …………………………………… 144
5 b0 f2 d3 W' N. _$ y% ?6.4.3 Bridge Driver Delete 实现 …………………………………………………… 1483 t9 b e' ^" F* u
6.4.4 测试 ………………………………………………………………………… 1486 h) @2 X @, D8 k
6.5 在Bridge 网络创建容器 …………………………………………………………… 149
7 Q! O6 P0 T! U( P% S6 G. i4 D; I6.5.1 挂载容器端点的流程 ……………………………………………………… 150- c9 f$ O) B9 J% K1 Q, ^" _& ^! R+ W( l
6.5.2 测试 ………………………………………………………………………… 156
$ q( K: z- J' d# @/ z7 o, L6.6 容器跨主机网络 …………………………………………………………………… 159
w# ` ~- U: H( }/ M6.6.1 跨主机容器网络的IPAM …………………………………………………… 160( C( h3 j: K/ w7 v; ^8 ?
6.6.2 跨主机容器网络通信的常见实现方式 …………………………………… 1611 e& k8 }- Y% t) a6 N# t. J- S6 I
6.7 小结 ………………………………………………………………………………… 163. E) q6 S5 \% E) @$ F
第7 章 高级实践……………………………………………………………………………… 164
5 n: |' V7 w/ \2 c. j7.1 使用mydocker 创建一个可访问的nginx 容器 …………………………………… 1640 X; W% b" a" Q" _$ |
7.1.1 获取nginx tar 包 …………………………………………………………… 164' P9 n" r- N" [- ?+ D3 `" Q6 V5 ^
7.1.2 构建自己的nginx 镜像 ……………………………………………………… 1657 ?9 e& J- F3 t$ t8 e" g9 _
7.1.3 运行mynginx 容器 ………………………………………………………… 167- [+ H3 B0 ~+ E, K
7.2 使用mydocker 创建一个flask redis 的计数器 ………………………………… 169
# c! p [+ x* W1 j7 l7.2.1 创建redis 容器 ……………………………………………………………… 169/ c8 U7 p5 w( j U8 x. _/ r0 Q; _% n
7.2.2 制作flask 镜像 ……………………………………………………………… 173* }' ?" f5 \2 {9 J" t
百度云盘下载地址(完全免费-绝无套路):
3 `6 [6 c/ R! p' o/ d! b3 |' z7 b |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|