Docker源码分析孙宏亮
部分旧书采用了标准图片,会可能出现少部分不同印次出版不同封面的情况,旧书无光盘、腰封、书衣、附件等,如有其他问题可咨询客服。
¥
44.25
7.5折
¥
59
八品
仅1件
作者 孙宏亮
出版社 机械工业出版社
ISBN 9787111510727
出版时间 2015-08
装帧 平装
开本 16开
定价 59元
货号 1619952114703389697
上书时间 2024-12-20
商品详情
品相描述:八品
商品描述
前言 Docker是什么 Docker从2013年诞生,短短两年时间就在全球IT技术圈内迅速走红,实乃技术圈内不可忽视的一阵飓风。然而,Docker是什么,Docker带来了什么? Docker官方如此描述Docker:“Build, Ship, Run. An open platform for distributed applications for developers and sysadmins”。换言之,Docker为开发者与系统管理者提供了分布式应用的开放平台,从而可以便捷地构建、迁移与运行分布式应用。 多年来,IT行业中开发与运维一直是两个界限清晰的词。开发工程师专门从事软件的开发工作,最终交付软件代码;运维工程师则部署前者交付的软件,并接管软件的运行与管理。然而,在长时间的实践过程中,开发与运维分离的方式难免存在弊病,两者职责的过分清晰导致软件效率的降低。随着分布式系统的流行,系统规模越来越大,软件越来越复杂,系统环境配置暴露的问题层出不穷。究其缘由,还是因为开发人员缺少软件运行环境的认知,而运维人员对软件逻辑所知甚少。在这样的背景下,DevOps横空出世,提倡开发与运维不可分割,协调并进。 Docker无疑是DevOps大潮中最具实践价值的不二法宝。Docker从Linux内核的角度出发,属于轻量级虚拟化技术,有能力秒级提供应用隔离环境,完成云计算时代分布式应用的第一需求“隔离”。另外,Docker的镜像技术利用联合文件系统的优势,自下至上打包系统软件、系统环境以及软件程序,将运行环境与应用程序灵活地结合,快速运行Docker化的应用程序。同时,可读性极强的Dockerfile,极大地简化镜像的复杂性,并为镜像的转移与重新构建提供了可能性。 Docker提供轻便的资源分配方式,解决应用运行与系统环境的依赖,弥合应用跨节点迁移的鸿沟,种种特性都表明Docker几乎就是为“云计算”而生的。如今,Docker社区不断扩大并健康发展,多家国际IT巨头也纷纷宣布支持Docker,这一切更是让全球IT人士对Docker的未来充满信心。 本书的内容 本书是一本引导读者了解Docker实现原理的技术普及书。笔者一直坚信,了解软件或者系统最直接、最透彻的方式就是研读它们的源码。“源码即文档”也是鼓励开发者能更多地从源码的角度去学习软件或系统的本质。 本书的内容主要集中于3个部分:Docker的架构,Docker的模块,Docker的三驾马车Swarm、Machine以及Compose。 第一部分,主要从宏观的角度和读者一起领略Docker的架构设计,并初步介绍架构中各模块的职责。 第二部分是本书的主体部分,主要针对Docker中多个重要的模块进行具体深入分析,包括:Docker Client、Docker Daemon、Docker Server、Docker网络、Docker镜像、Docker容器等。读者可以发现,Docker 的模块之间耦合度非常低,很适合循序渐进,层层深入。第2章至第8章主要从Docker软件的架构入手,勾勒骨架;第9章至第11章重点讨论Docker镜像技术,夯实基础;第12章至第14章则进一步分析Docker容器的始末,阐述本质。 第三部分介绍Docker生态三驾马车Swarm、Machine、Compose。Docker拥有强大的单机能力,三驾马车可以很好地补充Docker的跨主机能力以及部署能力。读者可以通过第15章至第17章感受Docker生态圈中其他功能强大的软件。 希望本书能够让读者最大化地感受Docker的神奇与魅力。 关于勘误 由于时间与水平都比较有限,因此本书难免会存在一些纰漏和错误。如果读者发现了问题,请及时与我联系。我也会在本书后续的版本中加以改正。我的邮箱是:allen.sun@daocloud.io。我非常希望和大家一起学习与讨论Docker,并共同推动Docker在社区的发展。 致谢 最后,向本书编写过程中给予我巨大帮助的人们表示最诚挚的感谢。感谢我的父母,没有他们的鼓励和支持,此书不可能在如此短的时间内完成。感谢我的母校浙江大学以及SEL实验室的老师与同学们,是他们在我求学过程中给予无私的指引与帮助。感谢我的同事熊中祥,是他在本书编写过程中提出了很多宝贵的建议,尤其在Machine和Compose部分。感谢我的同事喻勇和冯钊,他们为本书的编写做了很多沟通与协调工作。最后,还要感谢华章公司的编辑们,她们认真细致的工作,使本书以完美的形式展现给各位读者。 孙宏亮 2015年6月 作者简介 孙宏亮 ,硕士,浙江大学毕业,现为DaoCloud软件工程师,主要负责企业级容器云平台的研发工作。数年来一直从事云计算、PaaS领域的研究与实践,是国内较早一批接触Docker的先行者,同时也是Docker技术的推广者。
目录 赞誉 序 前言 第1章 Docker架构 1.1 引言 1.2 Docker总架构图 1.3 Docker各模块功能与实现分析 1.3.1 Docker Client 1.3.2 Docker Daemon 1.3.3 Docker Registry 1.3.4 Graph 1.3.5 Driver 1.3.6 libcontainer 1.3.7 Docker Container 1.4 Docker运行案例分析 1.4.1 docker pull 1.4.2 docker run 1.5 总结 第2章 Docker Client创建与命令执行 2.1 引言 2.2 创建Docker Client 2.2.1 Docker命令的flag参数解析 2.2.2 处理flag信息并收集Docker Client的配置信息 2.2.3 如何创建Docker Client 2.3 Docker命令执行 2.3.1 Docker Client解析请求命令 2.3.2 Docker Client执行请求命令 2.4 总结 第3章 启动Docker Daemon 3.1 引言 3.2 Docker Daemon的启动流程 3.3 mainDaemon()的具体实现 3.3.1 配置初始化 3.3.2 flag参数检查 3.3.3 创建engine对象 3.3.4 设置engine的信号捕获 3.3.5 加载builtins 3.3.6 使用goroutine加载daemon 对象并运行 3.3.7 打印Docker版本及驱动信息 3.3.8 serveapi的创建与运行 3.4 总结 第4章 Docker Daemon之NewDaemon实现 4.1 引言 4.2 NewDaemon具体实现 4.3 应用配置信息 4.3.1 配置Docker容器的MTU 4.3.2 检测网桥配置信息 4.3.3 查验容器间的通信配置 4.3.4 处理网络功能配置 4.3.5 处理PID文件配置 4.4 检测系统支持及用户权限 4.5 配置工作路径 4.6 加载并配置graphdriver 4.6.1 创建graphdriver 4.6.2 验证btrfs与SELinux的兼容性 4.6.3 创建容器仓库目录 4.6.4 迁移容器至aufs类型 4.6.5 创建镜像graph 4.6.6 创建volumesdriver以及volumes graph 4.6.7 创建TagStore 4.7 配置Docker Daemon网络环境 4.7.1 创建Docker网络设备 4.7.2 启用iptables功能 4.7.3 启用系统数据包转发功能 4.7.4 创建DOCKER链 4.7.5 注册处理方法至Engine 4.8 创建graphdb并初始化 4.9 创建execdriver 4.10 创建daemon实例 4.11 检测DNS配置 4.12 启动时加载已有Docker容器 4.13 设置shutdown的处理方法 4.14 返回daemon对象实例 4.15 总结 第5章 Docker Server的创建 5.1 引言 5.2 Docker Server创建流程 5.2.1 创建名为"serveapi"的Job 5.2.2 配置Job环境变量 5.2.3 运行Job 5.3 ServeApi运行流程 5.4 ListenAndServe实现 5.4.1 创建router路由实例 5.4.2 创建listener监听实例 5.4.3 创建http.Server 5.4.4 启动API服务 5.5 总结 第6章 Docker Daemon网络 6.1 引言 6.2 Docker Daemon网络介绍 6.3 Docker Daemon网络配置接口 6.4 Docker Daemon网络初始化 6.4.1 启动Docker Daemon传递flag参数 6.4.2 解析网络flag参数 6.4.3 预处理flag参数 6.4.4 确定Docker网络模式 6.5 创建Docker网桥 6.5.1 提取环境变量 6.5.2 确定Docker网桥设备名 6.5.3 查找bridgeIface网桥设备 6.5.4 bridgeIface已创建 6.5.5 bridgeIface未创建 6.5.6 获取网桥设备的网络地址 6.5.7 配置Docker Daemon的iptables 6.5.8 配置网络设备间数据报转发功能 6.5.9 注册网络Handler 6.6 总结 第7章 Docker容器网络 7.1 引言 7.2 Docker容器网络模式 7.2.1 bridge桥接模式 7.2.2 host模式 7.2.3 other container模式 7.2.4 none模式 7.3 Docker Client配置容器网络模式 7.3.1 使用Docker Client 7.3.2 runconfig包解析 7.3.3 CmdRun执行 7.4 Docker Daemon创建容器网络流程 7.4.1 创建容器之网络配置 7.4.2 启动容器之网络配置 7.5 execdriver网络执行流程 7.5.1 创建libcontainer的Config对象 7.5.2 调用libcontainer的namespaces启动容器 7.6 libcontainer实现内核态网络配置 7.6.1 创建exec.Cmd 7.6.2 启动exec.Cmd创建进程 7.6.3 为容器进程初始化网络环境 7.7 总结 第8章 Docker镜像 8.1 引言 8.2 Docker镜像介绍 8.3 rootfs 8.4 Union Mount 8.5 image 8.6 layer 8.7 总结 第9章 Docker镜像下载 9.1 引言 9.2 Docker镜像下载流程 9.3 Docker Client 9.3.1 解析镜像参数 9.3.2 配置认证信息 9.3.3 发送API请求 9.4 Docker Server 9.4.1 解析请求参数 9.4.2 创建并配置Job 9.4.3 触发执行Job 9.5 Docker Daemon 9.5.1 解析Job参数 9.5.2 创建session对象 9.5.3 执行镜像下载 9.6 总结 第10章 Docker镜像存储 10.1 引言 10.2 镜像注册 10.3 验证镜像ID 10.4 创建镜像路径 10.4.1 创建mnt、diff和layers子目录 10.4.2 挂载祖先镜像并返回根目录 10.5 存储镜像内容 10.5.1 解压镜像内容 10.5.2 收集镜像大小并记录 10.5.3 存储jsonData信息 10.6 注册镜像ID 10.7 总结 第11章 docker build实现 11.1 引言 11.2 docker build执行流程 11.2.1 Docker Client与docker build 11.2.2 Docker Server与docker build 11.2.3 Docker Daemon与docker build 11.3 Dockerfile命令解析流程 11.4 Dockerfile命令分析 11.4.1 FROM命令 11.4.2 RUN命令 11.4.3 ENV命令 11.5 总结 第12章 Docker容器创建 12.1 引言 12.2 Docker容器运行流程 12.3 Docker Daemon创建容器对象 12.3.1 LookupImage 12.3.2 CheckDepth 12.3.3 mergeAndVerifyConfig 12.3.4 newContainer 12.3.5 createRootfs 12.3.6 ToDisk 12.3.7 Register 12.4 Docker Daemon启动容器 12.4.1 setupContainerDns 12.4.2 Mount 12.4.3 initializeNetworking 12.4.4 verifyDaemonSetting 12.4.5 prepareVolumesForContainer 12.4.6 setupLinkedContainers 12.4.7 setupWorkingDirectory 12.4.8 createDaemonEnvironment 12.4.9 populateCommand 12.4.10 setupMountsForContainer 12.4.11 waitForStart 12.5 总结 第13章 dockerinit启动 13.1 引言 13.2 dockerinit介绍 13.2.1 dockerinit初始化内容 13.2.2 dockerinit与Docker Daemon 13.3 dockerinit执行入口 13.3.1 createCommand分析 13.3.2 namespace.exec 13.4 dockerinit运行 13.4.1 reexec.Init()的分析 13.4.2 dockerinit的执行流程 13.5 libcontainer的运行 13.5.1 Docker Daemon设置cgroups参数 13.5.2 Docker Daemon创建网络栈资源 13.5.3 dockerinit配置网络栈 13.5.4 dockerinit初始化mount namespace 13.5.5 dockerinit完成namespace配置 13.5.6 dockerinit执行用户命令Entrypoint 13.6 总结 第14章 libcontainer介绍 14.1 引言 14.2 Docker、libcontainer以及LXC的关系 14.3 libcontainer模块分析 14.3.1 namespace 14.3.2 cgroup 14.3.3 网络 14.3.4 挂载 14.3.5 设备 14.3.6 nsinit 14.3.7 其他模块 14.4 总结 第15章 Swarm架构设计与实现 15.1 引言 15.2 Swarm架构 15.2.1 Swarm Node 15.2.2 Docker Node 15.2.3 node discovery 15.2.4 scheduler 15.3 Swarm命令 15.3.1 swarm create 15.3.2 swarm manage 15.3.3 swarm join 15.3.4 swarm list 15.4 总结 第16章 Machine架构设计与实现 16.1 引言 16.2 Machine架构 16.2.1 Machine 16.2.2 Store 16.2.3 Host 16.2.4 Driver 16.2.5 Provisioner 16.2.6 Machine运行流程 16.3 Machine与Swarm的结合 16.4 总结 第17章 Compose架构设计与实现 17.1 引言 17.2 Compose介绍 17.3 Compose架构 17.4 Compose评价 17.4.1 Compose单机能力 17.4.2 Compose跨节点能力 17.4.3 Compose与Swarm 17.5 总结 内容摘要 《Docker源码分析》是一本引导读者深入了解Docker实现原理的技术普及读物,主要目标是通过对Docker架构和源代码的详细讲解和解剖,帮助读者对Docker的底层实现有一个全面的理解。本书的内容主要集中于三部分:Docker的架构、Docker的模块,以及Docker的三驾马车Swarm、Machine和Compose。 一部分(第1章)主要从宏观的角度和读者一起领略Docker的架构设计,并初步介绍架构中各模块的职责。 第二部分(第2~14章)是本书的主体部分,主要针对Docker中多个重要的模块进行具体深入分析,包括DockerClient、DockerDaemon、DockerServer、Docker网络、Docker镜像、Docker容器等。读者可以发现,Docker的模块之间耦合度非常低,很适合循序渐进,层层深入。第2~8章主要从Docker软件的架构入手,勾勒骨架;第9~11章集中于Docker镜像技术,夯实基础;第12~14章则进一步分析Docker容器的始末,阐述本质。 第三部分(第15~17章)介绍Docker生态三驾马车—Swarm、Machine和Compose。Docker拥有强大的单机能力,三驾马车可以很好地补充Docker的跨主机能力以及部署能力。读者可以通过这几章感受Docker生态中其他功能强大的软件。 主编推荐 国内首部Docker源码分析著作 从源码角度全面解析Docker设计与实现 填补Docker理论与实践之间的鸿沟 一本引导读者深入了解Docker实现原理的技术普及读物,主要目标是通过对Docker架构和源代码的详细讲解和解剖,帮助读者对Docker的底层实现有一个全面的理解 作者通过大量的流程图和代码片段对Docker的架构、Docker的重要模块,特别是对Swarm、Machine和Compose这三个模块进行了详细介绍和深度剖析 无论是Docker的使用者还是开发者,通过阅读此书都可以对Docker有更深刻的理解,能够更好的使用或者开发Docker
— 没有更多了 —
以下为对购买帮助不大的评价