|
Java电子书:自己动手写Docker 格式 pdf 电子书 PDF 电子书 Java吧 java8.com
8 C9 \) M6 l& b# f) r
5 ~4 O' @' D9 y* @% j
) P6 k% Z( [$ Y3 j编号:mudaima-P0260【Java吧 java8.com】" k! O0 S# \& N. C" y8 ^8 i" P
: o. B6 }! j( g. ^/ Z) @
7 {% S& z7 F& P: o, }
. V8 q9 T$ C6 PJava电子书目录:第1章 容器与开发语言………………………………………………………………………1( A0 y7 o2 @" x
1.1 Docker ………………………………………………………………………………11 m" I, _, x( l9 E" V
1.1.1 简介 …………………………………………………………………………1
8 Z" B' X, Z" p1.1.2 容器和虚拟机比较 …………………………………………………………26 `5 S0 `1 z# [) M4 h
1.1.3 容器加速开发效率 …………………………………………………………3" u4 x4 E% Z2 o2 x1 t5 x
1.1.4 利用容器合作开发 …………………………………………………………4+ [1 r: r [6 ^0 w0 E/ m
1.1.5 利用容器快速扩容 …………………………………………………………49 S: |3 e! `, i3 \! q
1.1.6 安装使用Docker ……………………………………………………………4, M; k3 t% i6 C! F1 }
1.2 Go ……………………………………………………………………………………52 f Z4 L% p: X; b8 E
1.2.1 描述 …………………………………………………………………………5
5 x2 N# U" W# ^/ x5 r @1.2.2 安装Go ………………………………………………………………………6
* l6 D( ^9 f* C+ B" K+ }# r1.2.3 配置GOPATH ………………………………………………………………6
) `* i8 m" O/ l- X4 G1.3 小结 …………………………………………………………………………………7- @2 N h8 x. U
第2章 基础技术………………………………………………………………………………8
5 L' J" A: i0 K/ H. u2.1 Linux Namespace 介绍 ………………………………………………………………85 @# X% }+ Y0 [
2.1.1 概念 …………………………………………………………………………80 ?2 k$ M/ Z6 p0 t2 n. A& w
2.1.2 UTS Namespace ………………………………………………………………10
- d( U0 k! ^, x+ R! Q2.1.3 IPC Namespace ………………………………………………………………11
7 Y0 u& S4 V2 q V2 |# R# O$ Z2.1.4 PID Namespace ………………………………………………………………13
}9 u- o& F% }2.1.5 Mount Namespace ……………………………………………………………14) c* H- \# D3 ~" {/ _
2.1.6 User Namespace ………………………………………………………………16' C) [# U( Q1 { P% j: _+ F. i
2.1.7 Network Namespace ………………………………………………………… 181 @; S8 J: S! l4 `9 ^4 D% n/ S( O
2.2 Linux Cgroups 介绍 ………………………………………………………………… 20) \% h( K1 c- T" x- @
2.2.1 什么是Linux Cgroups ……………………………………………………… 205 g: L; v" H2 u5 o
2.2.2 Docker 是如何使用Cgroups 的 …………………………………………… 242 c3 x5 x3 U- I, W
2.2.3 用Go 语言实现通过cgroup 限制容器的资源 …………………………… 25
7 C$ [9 K; G$ i5 n; }1 n2.3 Union File System …………………………………………………………………… 26 T' D) M- z/ B, a3 Q$ w
2.3.1 什么是Union File System …………………………………………………… 265 }; N& T. ]- m) e: T0 u
2.3.2 AUFS ………………………………………………………………………… 27
# Q1 c% C3 e3 c! d5 Y2.3.3 Docker 是如何使用AUFS 的 ……………………………………………… 27
4 g3 {. C" g: j4 {4 a5 u- @$ |5 X, \2.3.4 自己动手写AUFS…………………………………………………………… 34
- p( b X5 a" [, C8 @9 Y' p2.4 小结 ………………………………………………………………………………… 37
$ o$ ?& v8 }0 n* Q0 U8 a7 r3 ], {第3 章 构造容器……………………………………………………………………………… 38
& ?( m3 B8 S0 j5 d3 W+ t3.1 构造实现run 命令版本的容器 …………………………………………………… 38
; |! l+ J) g1 ^. F. x7 X3.1.1 Linux proc 文件系统介绍 …………………………………………………… 38
/ K4 u. Y8 r: a; k3.1.2 实现 run 命令 ……………………………………………………………… 39* c" n7 C9 |4 p1 W$ F
3.2 增加容器资源限制 ………………………………………………………………… 45& S* d8 z7 k1 O9 }( M
3.2.1 定义Cgroups 的数据结构 ………………………………………………… 45# I/ x2 x' }0 S# _+ H
3.2.2 在启动容器时增加资源限制的配置 ……………………………………… 51. p- Q U! H1 S3 Z- \, l
3.3 增加管道及环境变量识别 ………………………………………………………… 536 H: \& L4 S9 ]2 d% {% u6 @
3.4 小结 ………………………………………………………………………………… 58
" o' L$ h: d8 j- h第4 章 构造镜像……………………………………………………………………………… 59/ U1 Y+ ^, B# R0 r K# S
4.1 使用busybox 创建容器 …………………………………………………………… 591 G) f2 w7 A0 t. R6 K
4.1.1 busybox ……………………………………………………………………… 59: @0 l1 s0 Z: C ~5 K, V* k
4.1.2 pivot_root …………………………………………………………………… 608 ]) J# T S! s- M( h$ ^
4.2 使用AUFS 包装busybox …………………………………………………………… 63
; `8 g- j d1 r: v0 I4.3 实现volume 数据卷 ………………………………………………………………… 672 }$ B1 |& q% B3 y+ W+ L) S% r
4.4 实现简单镜像打包 ………………………………………………………………… 75
+ D2 Q; P( d$ M- m7 D4.5 小结 ………………………………………………………………………………… 77
1 ~% s% D7 s1 x) _1 z% \7 b9 Y第5 章 构建容器进阶………………………………………………………………………… 78
6 x& a6 T4 |! `0 l, b1 R* C5 l* B2 s5.1 实现容器的后台运行 ……………………………………………………………… 78
+ F* W+ H( V5 F6 I6 A5.2 实现查看运行中容器 ……………………………………………………………… 82
! X4 D& ?7 D" V5.2.1 准备数据 …………………………………………………………………… 824 _& v7 [ Q+ S2 a- K9 a
5.2.2 实现mydocker ps …………………………………………………………… 87: h4 ?8 X( B- m2 k, U) b
5.3 实现查看容器日志 ………………………………………………………………… 90, q6 m$ w, ^. ~( p* `# @
5.4 实现进入容器Namespace ………………………………………………………… 93( L3 X# @8 g+ O: J& s: r& E2 [8 d
5.4.1 setns ………………………………………………………………………… 94
$ g2 q+ y$ w6 f& P" }5 j5.4.2 Cgo …………………………………………………………………………… 94. Y5 Z9 g% T) X8 `& d8 x, I0 x! z0 |; C
5.4.3 实现命令 …………………………………………………………………… 94( S+ H8 F4 ^" v. z, U/ A& k) x5 ^
5.5 实现停止容器 ……………………………………………………………………… 100" F& o' ^/ E/ L' S0 U9 f
5.6 实现删除容器 ……………………………………………………………………… 104# q/ v/ w4 Z! [1 y
5.7 实现通过容器制作镜像 …………………………………………………………… 105$ [8 \4 A4 T8 ?. F# d! g
5.8 实现容器指定环境变量运行 ……………………………………………………… 117
( d6 S0 H. e/ `6 w: x5.8.1 修改runCommand …………………………………………………………… 117$ \4 [) a; Q; Y8 `( b/ @% m! k
5.8.2 修改Run 函数 ……………………………………………………………… 117
- V4 Z1 j/ Z& L! x9 H$ ?5.8.3 修改NewParentProcess 函数 ……………………………………………… 118' [% ]; [ z, Z6 ^3 }
5.8.4 修改mydocker exec 命令 …………………………………………………… 119
9 y9 e; J/ L/ Y3 \' b5.9 小结 ………………………………………………………………………………… 121$ _5 R9 {: u) m* q7 F
第6 章 容器网络……………………………………………………………………………… 122
, y0 i5 a. u% ?$ V% [, O6 }6.1 网络虚拟化技术介绍 ……………………………………………………………… 122: q$ ?( x; U( f+ |) L
6.1.1 Linux 虚拟网络设备 ………………………………………………………… 1228 w Y+ `9 M9 R+ R
6.1.2 Linux 路由表 ………………………………………………………………… 1244 p2 w/ c% F3 @0 X" A& C, U, d, x- w
6.1.3 Linux iptables ………………………………………………………………… 1260 o5 R3 @' L. T! I' X* J
6.1.4 Go 语言网络库介绍 ………………………………………………………… 127: H! q7 V5 X9 B6 c* }
6.2 构建容器网络模型 ………………………………………………………………… 128' j: R6 E* {3 V
6.2.1 模型 ………………………………………………………………………… 128
% l, }- `0 A& u. D0 w6.2.2 调用关系 …………………………………………………………………… 1301 q2 Z: Z( G0 p; n" d5 s U! p
6.3 容器地址分配 ……………………………………………………………………… 137
# \+ v1 w' k$ y2 K# g4 z5 D6.3.1 bitmap 算法介绍 …………………………………………………………… 138
9 i6 L# v( G5 f9 a5 T* Y/ C6.3.2 数据结构定义 ……………………………………………………………… 138
; S6 t7 H. U5 d; F8 ~6.3.3 地址分配的实现 …………………………………………………………… 140
- A3 G- t" t: I0 P, |2 }/ L6.3.4 地址释放的实现 …………………………………………………………… 142
5 R! b; ?2 }1 r3 s# n1 z9 D6.3.5 测试 ………………………………………………………………………… 1422 q* A \0 [, F1 b- S" {/ n
6.4 创建Bridge 网络 …………………………………………………………………… 1448 T! N. B% l: C3 F5 t8 L& l L) [
6.4.1 Bridge Driver Create 实现 …………………………………………………… 144+ \& S- K6 e( w
6.4.2 Bridge Driver 初始化Linux Bridge 流程 …………………………………… 144
) ^; R+ i- L, W6.4.3 Bridge Driver Delete 实现 …………………………………………………… 148
5 d6 O8 V- |! S# Y) S6.4.4 测试 ………………………………………………………………………… 148, g2 r5 `& m% r. B6 {" z; y
6.5 在Bridge 网络创建容器 …………………………………………………………… 1492 z' {! h/ d- V( O( D' I
6.5.1 挂载容器端点的流程 ……………………………………………………… 150
0 O* K s' w! I1 o4 Q$ M: b5 N8 `6.5.2 测试 ………………………………………………………………………… 156 ]4 M. L7 H3 R. Z
6.6 容器跨主机网络 …………………………………………………………………… 159! V. _; L! F+ T+ e, c! [# w" O
6.6.1 跨主机容器网络的IPAM …………………………………………………… 160: ^. m. e+ [ j0 \ O4 z, g: q
6.6.2 跨主机容器网络通信的常见实现方式 …………………………………… 1613 ^# x/ q, O7 C3 i- s& G; Q+ F
6.7 小结 ………………………………………………………………………………… 163. Y) ?6 I, M5 R" J
第7 章 高级实践……………………………………………………………………………… 164; i# m# E8 _$ D! n1 S
7.1 使用mydocker 创建一个可访问的nginx 容器 …………………………………… 164
1 \( A7 G7 S, n5 e C9 c" m9 ]7.1.1 获取nginx tar 包 …………………………………………………………… 164
3 }% { ^" ]/ {* Q; q9 c7.1.2 构建自己的nginx 镜像 ……………………………………………………… 165" ~5 [9 Z5 y! A
7.1.3 运行mynginx 容器 ………………………………………………………… 167+ G0 u! P9 [# m, _7 Y
7.2 使用mydocker 创建一个flask redis 的计数器 ………………………………… 169; c. h% p( f# U$ _/ K4 ]# N
7.2.1 创建redis 容器 ……………………………………………………………… 1697 Y& E, v8 t& A" [
7.2.2 制作flask 镜像 ……………………………………………………………… 173# k, G# C x; U& ^) ?2 ~7 D4 w
百度云盘下载地址(完全免费-绝无套路):- e/ _! f* L: F' S8 Y
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|