自己动手写Docker 陈显鹭 PDF下载

想自己动手写Docker?你需要看《自己动手写Docker》这本书!

《自己动手写Docker》在详细分析Docker所依赖的技术栈的基础上,一步一步地通过代码实例,让读者可以自己循序渐进地用Go语言构建出一个容器的引擎。不同于其他Docker原理介绍或代码剖析的书籍,《自己动手写Docker》旨在提供给读者一条动手路线,一步一步地实现Docker的隔离性,构建Docker的镜像、容器的生命周期及Docker的网络等。

作者简介

(点击作者姓名可查看个人主页)

陈显鹭(花名:遥鹭)-阿里云高级研发工程师

对Docker有深入研究,是Docker多个项目的Contributor,专注于容器技术的编排与基础环境研究。爱好折腾源代码,热爱开源文化并积极参与社区开源项目的研发。

王炳燊(花名:溪恒)-阿里云研发工程师

具有丰富的Linux开发经验,对Docker有深入研究,多次提交Docker Patch。目前从事阿里云容器服务网络方案的设计与实现,专注于容器技术的基础环境研究。

秦妤嘉(花名:嫀嫀)-阿里云高级研发工程师

DevOps工程师,有丰富的容器化持续集成和持续交付开发实战经验,进行过Jenkins源码分析改造和Jenkins插件开发。目前从事阿里云容器服务持续集成和持续交付方案的设计和实现。

为什么要写这本书

Docker 技术可谓是近年最火热的技术之一,铺天盖地的技术论坛和各种讲座,大家都在分享关于如何容器化及如何使用Docker优化自己运维和开发流程的经验。随着Docker技术的逐渐普及,使用Docker已经不再是一个难题。现在更加重要的是生产环境容器化的最佳实践,另外就是容器的编排框架之争。但是,对于技术人员来说,除去Docker 外表的繁华外,什么是容器,容器到底是怎么创建的,容器底层的技术探秘也是非常重要的。

2014年开始接触 Docker的时候,经历了从最初的新奇—感叹竟然还有Docker 这样的好工具,到逐渐熟悉Docker的各种功能,尝试在生产环境中使用Docker技术的过程。但是,每每被人问到:“Docker技术到底是怎么实现的呢?”我只能粗粗浅浅地说:“Docker是使用Linux Kernel的Namespace 和 Cgroups实现的一种容器技术。”那么,什么是Namespace,什么是Cgroups,Docker是怎么使用它们的,容器到底是怎么一步步被创建出来的?问到这些,我就会支支吾吾地不知所以。由此可见,了解容器技术的底层技术,然后明白它们是如何工作的,尤为重要,这些才是整个容器技术的基石,掌握了这些基石才能更加容易地向上攀登。

单单讲解底层的技术实现细节和源码解读是很枯燥的一件事,一般来说很难有耐心去一点点细读然后揣摩其中的奥妙,这样囫囵吞枣地过一遍技术细节,作用不大。因此,便萌生了写一本《自己动手写Docker》这样的书的想法。本书不去刻意讲解容器技术的细节,用到什么讲解什么,点到为止,更加细节的内容留给读者自己探索。通过阅读本书,可以一步步地去了解容器技术的实现细节,更可以跟着作者一步步地用自己的代码去实现它。本书最大的乐趣莫过于用自己最新了解到的知识去动手实现自己的容器。由此可以进一步打开你进入容器技术社区的大门。

本书的内容

本书的目的是去引导读者通过学习容器技术的实现细节,一步步去构建一个简单的容器。 从这个过程中,了解整个容器技术领域和实现细节。本书注重原理的讲解与实践,每一部分都 会有详细的代码解析,力争用最少最精简的代码,帮助读者构建自己的容器。

本书的内容主要分为“容器与开发语言” “基础技术” “构造容器” “构造镜像” “构造 容器进阶” “容器网络” “高级实践” 这7章。

  • 容器与开发语言:主要介绍 Docker 的基本功能和特点,并且对后面即将使用的 Go 语言 做一个简单的介绍。

  • 基础技术:主要介绍实现容器的底层技术,如Namespace、Cgroups、Union File System。 每一小节都会有文字性介绍,并且附有一个简短的小例子程序,介绍在容器上是如何使 用这项技术的,方便读者清晰地理解各个技术点在容器上的作用。

  • 构造容器:使用前面两章介绍的基础技术,构造一个最简单的容器环境,会将整体实现 细节及代码解析一点点展现,直接使用前面介绍的基础技术,从而更加有实战感。

  • 构造镜像: 使用 2.3 节介绍的分层文件系统技术,构建一个简单的容器镜像,体现容器 镜像的分层思想。

  • 构造容器进阶:更加贴近真实的容器实现,在原来的基础上,增加更丰富的功能。通过 这一章的学习,读者可以更好地了解各种技术是如何整合在一起,去实现容器整体功能 的。

  • 容器网络: 除了实现一个容器环境之外,这一章还会讲解如何使自己的容器和宿主机通 信,以及如何让不同的容器之间进行通信,更加贴近真实环境。

  • 高级实践: 使用自己编写的容器,运行一些通用程序,验证容器的可用性。此外,本章 还介绍了目前Docker 使用的容器运行引擎,以及目前容器运行态引擎的概况。


目录

第1章 容器与开发语言1

1.1 Docker 1

1.1.1 简介 1

1.1.2 容器和虚拟机比较 2

1.1.3 容器加速开发效率 3

1.1.4 利用容器合作开发 4

1.1.5 利用容器快速扩容 4

1.1.6 安装使用Docker 4

1.2 Go 5

1.2.1 描述 5

1.2.2 安装Go 6

1.2.3 配置GOPATH 6

1.3 小结 7

第2章 基础技术8

2.1 Linux Namespace 介绍 8

2.1.1 概念 8

2.1.2 UTS Namespace 10

2.1.3 IPC Namespace 11

2.1.4 PID Namespace 13

2.1.5 Mount Namespace 14

2.1.6 User Namespace 16

2.1.7 Network Namespace 18

2.2 Linux Cgroups介绍 20

2.2.1 什么是Linux Cgroups 20

2.2.2 Docker是如何使用Cgroups的 24

2.2.3 用Go语言实现通过cgroup限制容器的资源 25

2.3 Union File System 26

2.3.1 什么是Union File System 26

2.3.2 AUFS 27

2.3.3 Docker是如何使用AUFS的 27

2.3.4 自己动手写AUFS34

2.4 小结 37

第3章 构造容器38

3.1 构造实现run命令版本的容器 38

3.1.1 Linux proc 文件系统介绍 38

3.1.2 实现 run 命令 39

3.2 增加容器资源限制 45

3.2.1 定义Cgroups的数据结构 45

3.2.2 在启动容器时增加资源限制的配置 51

3.3 增加管道及环境变量识别 53

3.4 小结 58

第4章 构造镜像59

4.1 使用busybox创建容器 59

4.1.1 busybox 59

4.1.2 pivot_root 60

4.2 使用AUFS包装busybox 63

4.3 实现volume数据卷 67

4.4 实现简单镜像打包 75

4.5 小结 77

第5章 构建容器进阶78

5.1 实现容器的后台运行 78

5.2 实现查看运行中容器 82

5.2.1 准备数据 82

5.2.2 实现mydocker ps 87

5.3 实现查看容器日志 90

5.4 实现进入容器Namespace 93

5.4.1 setns 94

5.4.2 Cgo 94

5.4.3 实现命令 94

5.5 实现停止容器 100

5.6 实现删除容器 104

5.7 实现通过容器制作镜像 105

5.8 实现容器指定环境变量运行 117

5.8.1 修改runCommand 117

5.8.2 修改Run函数 117

5.8.3 修改NewParentProcess函数 118

5.8.4 修改mydocker exec命令 119

5.9 小结 121

第6章 容器网络122

6.1 网络虚拟化技术介绍 122

6.1.1 Linux虚拟网络设备 122

6.1.2 Linux路由表 124

6.1.3 Linux iptables 126

6.1.4 Go语言网络库介绍 127

6.2 构建容器网络模型 128

6.2.1 模型 128

6.2.2 调用关系 130

6.3 容器地址分配 137

6.3.1 bitmap算法介绍 138

6.3.2 数据结构定义 138

6.3.3 地址分配的实现 140

6.3.4 地址释放的实现 142

6.3.5 测试 142

6.4 创建Bridge网络 144

6.4.1 Bridge Driver Create实现 144

6.4.2 Bridge Driver初始化Linux Bridge流程 144

6.4.3 Bridge Driver Delete实现 148

6.4.4 测试 148

6.5 在Bridge网络创建容器 149

6.5.1 挂载容器端点的流程 150

6.5.2 测试 156

6.6 容器跨主机网络 159

6.6.1 跨主机容器网络的IPAM 160

6.6.2 跨主机容器网络通信的常见实现方式 161

6.7 小结 163

第7章 高级实践164

7.1 使用mydocker 创建一个可访问的nginx容器 164

7.1.1 获取nginx tar包 164

7.1.2 构建自己的nginx镜像 165

7.1.3 运行mynginx容器 167

7.2 使用mydocker 创建一个flsk + redis的计数器 169

7.2.1 创建redis容器 169

7.2.2 制作flsk镜像 173

7.2.3 创建myflsk容器 176

7.3 runC 177

7.3.1 简介 177

7.3.2 OCI 标准包(bundle) 177

7.3.3 confi.json 178

7.3.4 mounts 178

7.3.5 process 179

7.3.6 user 179

7.3.7 hostname 180

7.3.8 platform 180

7.3.9 钩子(Hook) 181

7.4 runC 创建容器流程 182

7.5 Docker containerd 项目介绍 186

7.5.1 架构 187

7.5.2 特性和路线图 188

7.5.3 containerd和Docker 之间的关系 188

7.5.4 containerd、OCI和runC之间的关系 188

7.5.5 containerd和容器编排系统的关系 189

7.6 Kubernetes CRI容器引擎 189

7.6.1 什么是CRI 189

7.6.2 为什么需要CRI 193

7.6.3 为什么CRI是接口且是基于容器的而不是基于Pod的 193

7.6.4 如何使用CRI 193

7.6.5 CRI的目标 194

7.6.6 已知的问题 194

7.7 小结 195 [1] 

需要的小伙伴,点击下发链接,关注公众号获取

自己动手写Docker 陈显鹭 PDF下载 - 镀百资源站

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《自己动手Docker》是一本由架构师嵩天和Docker社区联合编的开源技术书籍。书中介绍了Docker的基本概念、背景知识和原理,并且通过实践的方式帮助读者了解Docker的具体应用。以下是对这本书的回答: 《自己动手Docker》这本书是作者嵩天和Docker社区共同编的一本开源技术书籍。通过这本书,读者可以了解到Docker的基本概念、背景知识和工作原理。 首先,书中介绍了Docker的概念和由来。Docker是一个开源的容器化技术,通过容器化的方式,能够将应用程序和其依赖的资源打包在一起,以便于在任何地方都能够运行。Docker的诞生解决了传统虚拟化技术的运行效率问题,并且能够提供更好的资源利用率和应用程序的可移植性。 其次,书中详细介绍了Docker的工作原理和组成部分。Docker的核心是Docker引擎,它负责创建、运行和管理容器Docker镜像是Docker的核心概念之一,它是一个只读的模板,包含了运行应用程序所需的全部依赖项。通过Docker镜像,我们可以快速创建和部署应用程序。此外,书中还介绍了容器和镜像的关系、Docker的网络和存储管理方式等重要内容。 最后,书中通过实际操作引导读者理解和使用Docker。通过一些具体的例子和实践,读者可以学习如何构建自己的Docker镜像、创建和运行容器、使用Docker网络和存储等技术。通过这些实践,读者不仅能够清晰地了解Docker的工作机制,还能够掌握一些实际应用场景下的技巧和经验。 总而言之,《自己动手Docker》这本书通过理论和实践相结合的方式,以简洁明了的语言和实例详细解释了Docker的基本概念、工作原理和实际应用。是一本适合开发者、运维人员和对Docker感兴趣的读者了解和学习Docker的好书籍。 ### 回答2: 《自己动手docker》是一本以Docker为重点的技术书籍,通过学习本书可以了解Docker的原理和使用方法,掌握构建、部署和管理容器化应用的技巧。 这本书首先介绍了Docker的背景和发展,解释了为什么要使用Docker以及它的优势。接着,书中详细讲解了Docker的核心概念,包括镜像、容器、仓库等,帮助读者理解Docker的基本原理和组成部分。 随后,本书介绍了如何在本地环境搭建Docker,并通过实例演示了如何构建自定义镜像、运行容器以及管理容器的生命周期。这些实例涵盖了常见的应用场景,如部署Web应用、数据库容器化等。 此外,本书还介绍了Docker Swarm和Kubernetes等容器编排工具,让读者能够了解如何使用这些工具高效地管理和扩展容器化应用。 总体来说,《自己动手docker》是一本很实用的技术书籍,适合那些想要系统学习和掌握Docker技术的开发者和运维人员。无论是初学者还是有一定经验的人,都可以从这本书中获得价值。通过亲自动手实践各种实例,读者能够深入理解Docker的原理和使用方法,提升自己的技术水平。 ### 回答3: 《自己动手docker》是一本讲述如何编Docker的书籍。Docker是一种流行的容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,从而实现应用程序在不同环境中的快速部署和扩展。 这本书主要讲解了Docker的核心原理和技术实现。首先,它介绍了Linux容器的基本概念和原理,包括命名空间、控制组、镜像和容器等。然后,它详细解释了Docker的架构和基本组件,例如Docker引擎、镜像仓库和网络管理等。 接下来,这本书逐步引导读者编自己的Docker。它从编一个简单的容器隔离工具开始,逐渐引入更多功能,例如容器的生命周期管理、网络隔离和卷管理等。这样,读者能够逐步了解容器化技术的实现细节。 此外,这本书还介绍了一些与Docker相关的技术和工具,例如容器编排工具Docker Compose和容器编排平台Kubernetes。这些技术可以帮助读者更好地管理和扩展自己的Docker应用程序。 总而言之,《自己动手docker》是一本编Docker容器的实践指南。通过学习这本书,读者可以深入了解Docker的原理和实现,并掌握使用Docker构建和管理容器的技能。无论是对于开发人员还是系统管理员来说,这本书都是一本不可多得的学习资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值