自己动手写Docker epub pdf mobi txt 电子书 下载 2024
发表于2024-11-06
自己动手写Docker epub pdf mobi txt 电子书 下载 2024
√ 经阿里云战火洗礼,将容器|Go|新规范和开源项目精密地融为一体。
√ 容器编排至佳实践与生产环境容器化,是迈向高阶应用的重大课题。
√ 理解容器底层实现原理,是攀登效用极限及创造其扩展应用的基石。
√ 造轮子可取之义在于知其所以然——全局、脉络、趋势及其特殊性。
《自己动手写Docker》在详细分析Docker所依赖的技术栈的基础上,一步一步地通过代码实例,让读者可以自己循序渐进地用Go语言构建出一个容器的引擎。不同于其他Docker原理介绍或代码剖析的书籍,《自己动手写Docker》旨在提供给读者一条动手路线,一步一步地实现Docker的隔离性,构建Docker的镜像、容器的生命周期及Docker的网络等。《自己动手写Docker》涉及的代码都托管在GitHub上,读者可以对照书中的步骤从代码层面学习构建流程,从而精通整个容器技术栈。《自己动手写Docker》也对目前业界容器技术的方向和实现做了简单介绍,以加深读者对容器生态的认识和理解。
《自己动手写Docker》适合对容器技术已经使用过或有一些了解,希望更深层次掌握容器技术原理和至佳实践的读者。
陈显鹭
阿里云高级研发工程师,对Docker有深入研究,是Docker多个项目的Contributor,专注于容器技术的编排与基础环境研究。爱好折腾源代码,热爱开源文化并积极参与社区开源项目的研发。
王炳燊
阿里云研发工程师,具有丰富的Linux开发经验,对Docker有深入研究,多次提交Docker Patch。目前从事阿里云容器服务网络方案的设计与实现,专注于容器技术的基础环境研究。
秦妤嘉
阿里云高级研发工程师、DevOps工程师,有丰富的容器化持续集成和持续交付开发实战经验,进行过Jenkins源码分析改造和Jenkins插件开发。目前从事阿里云容器服务持续集成和持续交付方案的设计和实现。
容器技术发展日新月异,除了不断地跟进全新的版本和社区发展,优秀的深入学习方式就是通过模仿来造一个类似的轮子。
本书结合了几位作者在容器领域和阿里云上的生产实践,涉及了从入门的容器技术和Go原理到全新的容器领域规范和开源项目OCI、containerd、CRI等,很精炼地将如何从零写一个Docker娓娓道来,非常有助于提高读者在Docker领域的深度动手能力。
——阿里巴巴高级技术专家,汤志敏
本书通过从头构建容器引擎、构造镜像,深入浅出地讲解了容器背后的原理,是一本不可多得的好书。
——阿里巴巴高级技术专家,戒空
随着Docker技术的不断发展,Docker公司、阿里云及其他的云产品公司都推出了越来越成熟的、基于Docker的解决方案,一场Docker容器带来的技术变革正在兴起。本书内容由浅至深,通俗易懂,引导读者通过学习容器技术的实现细节,一步步去构建一个简单的容器,能帮助有一定Docker基础的工程师学习到更有实践性的经验,对刚接触Docker技术的工程师也很有参考价值。
——阿里巴巴技术专家,罗晶
第1章容器与开发语言1
1.1Docker 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.2Go 5
1.2.1描述 5
1.2.2安装Go 6
1.2.3配置GOPATH 6
1.3小结 7
第2章基础技术8
2.1Linux Namespace 介绍 8
2.1.1概念 8
2.1.2UTS Namespace 10
2.1.3IPC Namespace 11
2.1.4PID Namespace 13
2.1.5Mount Namespace 14
2.1.6User Namespace 16
2.1.7Network Namespace 18
2.2Linux Cgroups介绍 20
2.2.1什么是Linux Cgroups 20
2.2.2Docker是如何使用Cgroups的 24
2.2.3用Go语言实现通过cgroup限制容器的资源 25
2.3Union File System 26
2.3.1什么是Union File System 26
2.3.2AUFS 27
2.3.3Docker是如何使用AUFS的 27
2.3.4自己动手写AUFS34
2.4小结 37
第3章构造容器38
3.1构造实现run命令版本的容器 38
3.1.1Linux 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.1busybox 59
4.1.2pivot_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.1setns 94
5.4.2Cgo 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.1Linux虚拟网络设备 122
6.1.2Linux路由表 124
6.1.3Linux iptables 126
6.1.4Go语言网络库介绍 127
6.2构建容器网络模型 128
6.2.1模型 128
6.2.2调用关系 130
6.3容器地址分配 137
6.3.1bitmap算法介绍 138
6.3.2数据结构定义 138
6.3.3地址分配的实现 140
6.3.4地址释放的实现 142
6.3.5测试 142
6.4创建Bridge网络 144
6.4.1Bridge Driver Create实现 144
6.4.2Bridge Driver初始化Linux Bridge流程 144
6.4.3Bridge 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 创建一个?sk + redis的计数器 169
7.2.1创建redis容器 169
7.2.2制作?sk镜像 173
7.2.3创建my?sk容器 176
7.3runC 177
7.3.1简介 177
7.3.2OCI 标准包(bundle) 177
7.3.3con?.json 178
7.3.4mounts 178
7.3.5process 179
7.3.6user 179
7.3.7hostname 180
7.3.8platform 180
7.3.9钩子(Hook) 181
7.4runC 创建容器流程 182
7.5Docker containerd 项目介绍 186
7.5.1架构 187
7.5.2特性和路线图 188
7.5.3containerd和Docker 之间的关系 188
7.5.4containerd、OCI和runC之间的关系 188
7.5.5containerd和容器编排系统的关系 189
7.6Kubernetes 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.5CRI的目标 194
7.6.6已知的问题 194
7.7小结 195
序
我是阿里云容器服务团队的架构师易立,很荣幸为这本书作序。
当显鹭等几位同学跟我谈起他们想写一本介绍如何从头打造一个Docker引擎的书时,我有些担心这样的内容是不是太小众,毕竟绝大多数读者都是Docker的使用者而非开发者。然而读完样章,看到这三位同学笔下翔实的内容,文中透出的热情和自信打消了我的顾虑。
Docker是技术圈中的当红小鲜肉。自从2013年横空出世以来,迅速在开发者社区流行开来。在2016年9月,Docker镜像在DockerHub的总下载量就已经超过了60亿次,并且以每6周10亿次的速度迅速增长。
大家都知道Docker技术脱胎于LinuxContainer(LXC)技术,在LXC的发展过程中,IBM、Google、Redhat、Canonical等技术巨擘做出了众多的贡献。然而,Docker到底有什么魔力,能够在这么短的时间之内就风靡了整个技术圈呢?
Docker公司的创始人兼CTO—SolomonHykes,有机地把一系列技术CGroup、Namespace和UnionFS整合起来,极大地降低了容器技术的复杂度,简化了开发者用户体验。他敏锐地预测到一旦标准化容器技术最终出现,整个技术行业将会受到怎样深远的影响。Docker公司开源了DockerEngine,定义了一个以容器镜像为标准的应用打包格式;并且建立DockerHub服务进行镜像分发和协作。这些举措迅速创建了一个良好的社区和合作伙伴生态圈,包含AWS、Google、Microsoft、IBM和国内的众多公司。在短短几年的时间内,Docker几乎成为了容器技术的代名词。
“得标准者得天下”,容器底层标准化之争风云再起。2014年底,CoreOS推出rkt容器引擎,试图挑战Docker另立标准。Docker在2015年6月宣布成立OCI(OpenContainerInitiative)组织作为Linux基金会的协作项目,并将其容器标准和runtime参考实现(RunC)贡献出来,旨在围绕容器格式和运行时制定一个开放的工业化标准。这一举措化解了社区在容器标准上的第一次分歧。
随着容器技术的快速发展,技术生态逐渐从围绕单机环境构建和运行容器化应用,发展为支持大规模容器编排技术。云平台成为了分布式网络操作系统,而容器成为了“进程”执行单元,可以动态地运行在不同宿主机环境中。其中,Kubernetes、Mesos、Docker诸强争霸,各有所长。2016年6月,Docker宣布开始在DockerEngine中内置Swarmmode,这极大地简化了容器编排的复杂性,但也遭到了社区的强烈反对。Google发起CRI(ContainerRuntimeInterface,容器运行时接口)项目,通过shim的抽象层使得调度框架支持不同的容器引擎实现。Mesos推出了Uni?dContainerizer,以支持Docker、Appc、OCI等不同的镜像格式,而无须再依赖DockerEngine。
面对这些挑战,2016年12月14日,Docker公司宣布将DockerEngine的核心组件Containerd捐赠到一个新的开源社区,任其独立发展和运营,目标是提供一个标准化的容器runtime,其注重简单、健壮性和可移植性。由于Containerd只包含容器管理最基本的能力,因此上层框架可以有更大的灵活性来提供容器的调度和编排能力。阿里云、AWS、Google、IBM和Microsoft会作为Containerd的初始成员,为项目贡献力量。
在技术爆发的年代,新技术层出不穷,而快餐式的阅读和了解无法帮助我们梳理和把握发展的脉络。对一些核心技术既要知其然也要知其所以然,这样才能举一反三,对技术趋势建立起自己的理解和判断。了解容器基础知识,可以深入理解容器在进程管理、资源管理、安全隔离等方面与传统方式的不同,也有助于了解容器在网络、存储、安全等方面的特殊性。
最好的学习方式莫过于自己亲手实践。计算机界的泰斗AndrewTanenbaum教授为教学而构建了Minix,而这也启发了LinusTorvalds大神创造了Linux。我们期待同学们能够从本书循序渐进的讲解中学习容器相关的技术细节,深入理解Docker的底层技术实现,围绕容器技术实现创造性的扩展和应用。
易立
2017年1月
为什么要写这本书
Docker技术可谓是近年最火热的技术之一,铺天盖地的技术论坛和各种讲座,大家都在分享关于如何容器化及如何使用Docker优化自己运维和开发流程的经验。随着Docker技术的逐渐普及,使用Docker已经不再是一个难题。现在更加重要的是生产环境容器化的最佳实践,另外就是容器的编排框架之争。但是,对于技术人员来说,除去Docker外表的繁华外,什么是容器,容器到底是怎么创建的,容器底层的技术探秘也是非常重要的。
我在2014年开始接触Docker,经历了从最初的新奇—感叹竟然还有Docker这样的好工具,到逐渐熟悉Docker的各种功能,尝试在生产环境中使用Docker技术的过程。但是,每每被人问到:“Docker技术到底是怎么实现的呢?”我只能粗粗浅浅地说:“Docker是使用LinuxKernel的Namespace和Cgroups实现的一种容器技术。”那么,什么是Namespace,什么是Cgroups,Docker是怎么使用它们的,容器到底是怎么一步步被创建出来的?问到这些,我就会支支吾吾地不知所以。由此可见,了解容器技术的底层技术,然后明白它们是如何工作的,尤为重要,这些才是整个容器技术的基石,掌握了这些基石才能更加容易地向上攀登。
单单讲解底层的技术实现细节和源码解读是很枯燥的一件事,一般来说很难有耐心去一点点细读然后揣摩其中的奥妙,这样囫囵吞枣地过一遍技术细节,作用不大。因此,便萌生了写一本《自己动手写Docker》这样的书的想法。本书不去刻意讲解容器技术的细节,用到什么讲解什么,点到为止,更加细节的内容留给读者自己探索。通过阅读本书,可以一步步地去了解容器技术的实现细节,更可以跟着作者一步步地用自己的代码去实现它。本
自己动手写Docker epub pdf mobi txt 电子书 下载 2024
自己动手写Docker 下载 epub mobi pdf txt 电子书 2024自己动手写Docker mobi pdf epub txt 电子书 下载 2024
自己动手写Docker epub pdf mobi txt 电子书 下载书有点薄,还没看
评分内容不错,看了受益匪浅。
评分南宁市女生!南宁市你那是那么那么只能说明什么那么说明什么是没事妈妈每周末
评分不错,值得购买
评分docker in..
评分专业必备,正版,实用性强
评分教你用go语言写docker,很新的书
评分ddddfddffffff
评分写的比较清晰,思路都能带动读者手把手开发
自己动手写Docker epub pdf mobi txt 电子书 下载 2024