Docker源码分析

Docker源码分析
6.4
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 机械工业出版社
2015-08
版次: 1
ISBN: 9787111510727
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 247页
  •   《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生态中其他功能强大的软件。   孙宏亮,硕士,浙江大学毕业,现为DaoCloud软件工程师,主要负责企业级容器云平台的研发工作。数年来一直从事云计算、PaaS领域的研究与实践,是国内较早一批接触Docker的先行者,同时也是Docker技术的推广者。 赞誉前言第1章 Docker架构1.1 引言1.2 Docker总架构图1.3 Docker各模块功能与实现分析1.3.1 Docker Client1.3.2 Docker Daemon1.3.3 Docker Registry1.3.4 Graph1.3.5 Driver1.3.6 libcontainer1.3.7 Docker Container1.4 Docker运行案例分析1.4.1 docker pull1.4.2 docker run1.5 总结第2章 Docker Client创建与命令执行2.1 引言2.2 创建Docker Client2.2.1 Docker命令的flag参数解析2.2.2 处理flag信息并收集Docker Client的配置信息2.2.3 如何创建Docker Client2.3 Docker命令执行2.3.1 Docker Client解析请求命令2.3.2 Docker Client执行请求命令2.4 总结第3章 启动Docker Daemon3.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 加载builtins3.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容器的MTU4.3.2 检测网桥配置信息4.3.3 查验容器间的通信配置4.3.4 处理网络功能配置4.3.5 处理PID文件配置4.4 检测系统支持及用户权限4.5 配置工作路径4.6 加载并配置graphdriver4.6.1 创建graphdriver4.6.2 验证btrfs与SELinux的兼容性4.6.3 创建容器仓库目录4.6.4 迁移容器至aufs类型4.6.5 创建镜像graph4.6.6 创建volumesdriver以及volumes graph4.6.7 创建TagStore4.7 配置Docker Daemon网络环境4.7.1 创建Docker网络设备4.7.2 启用iptables功能4.7.3 启用系统数据包转发功能4.7.4 创建DOCKER链4.7.5 注册处理方法至Engine4.8 创建graphdb并初始化4.9 创建execdriver4.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"的Job5.2.2 配置Job环境变量5.2.3 运行Job5.3 ServeApi运行流程5.4 ListenAndServe实现5.4.1 创建router路由实例5.4.2 创建listener监听实例5.4.3 创建http.Server5.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的iptables6.5.8 配置网络设备间数据报转发功能6.5.9 注册网络Handler6.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 Client7.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.Cmd7.6.2 启动exec.Cmd创建进程7.6.3 为容器进程初始化网络环境7.7 总结第8章 Docker镜像8.1 引言8.2 Docker镜像介绍8.3 rootfs8.4 Union Mount8.5 image8.6 layer8.7 总结第9章 Docker镜像下载9.1 引言9.2 Docker镜像下载流程9.3 Docker Client9.3.1 解析镜像参数9.3.2 配置认证信息9.3.3 发送API请求9.4 Docker Server9.4.1 解析请求参数9.4.2 创建并配置Job9.4.3 触发执行Job9.5 Docker Daemon9.5.1 解析Job参数9.5.2 创建session对象9.5.3 执行镜像下载9.6 总结第10章 Docker镜像存储10.1 引言10.2 镜像注册10.3 验证镜像ID10.4 创建镜像路径10.4.1 创建mnt、diff和layers子目录10.4.2 挂载祖先镜像并返回根目录10.5 存储镜像内容10.5.1 解压镜像内容10.5.2 收集镜像大小并记录10.5.3 存储jsonData信息10.6 注册镜像ID10.7 总结第11章 docker build实现11.1 引言11.2 docker build执行流程11.2.1 Docker Client与docker build11.2.2 Docker Server与docker build11.2.3 Docker Daemon与docker build11.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 LookupImage12.3.2 CheckDepth12.3.3 mergeAndVerifyConfig12.3.4 newContainer12.3.5 createRootfs12.3.6 ToDisk12.3.7 Register12.4 Docker Daemon启动容器12.4.1 setupContainerDns12.4.2 Mount12.4.3 initializeNetworking12.4.4 verifyDaemonSetting12.4.5 prepareVolumesForContainer12.4.6 setupLinkedContainers12.4.7 setupWorkingDirectory12.4.8 createDaemonEnvironment12.4.9 populateCommand12.4.10 setupMountsForContainer12.4.11 waitForStart12.5 总结第13章 dockerinit启动13.1 引言13.2 dockerinit介绍13.2.1 dockerinit初始化内容13.2.2 dockerinit与Docker Daemon13.3 dockerinit执行入口13.3.1 createCommand分析13.3.2 namespace.exec13.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 namespace13.5.5 dockerinit完成namespace配置13.5.6 dockerinit执行用户命令Entrypoint13.6 总结第14章 libcontainer介绍14.1 引言14.2 Docker、libcontainer以及LXC的关系14.3 libcontainer模块分析14.3.1 namespace14.3.2 cgroup14.3.3 网络14.3.4 挂载14.3.5 设备14.3.6 nsinit14.3.7 其他模块14.4 总结第15章 Swarm架构设计与实现15.1 引言15.2 Swarm架构15.2.1 Swarm Node15.2.2 Docker Node15.2.3 node discovery15.2.4 scheduler15.3 Swarm命令15.3.1 swarm create15.3.2 swarm manage15.3.3 swarm join15.3.4 swarm list15.4 总结第16章 Machine架构设计与实现16.1 引言16.2 Machine架构16.2.1 Machine16.2.2 Store16.2.3 Host16.2.4 Driver16.2.5 Provisioner16.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与Swarm17.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生态中其他功能强大的软件。
  • 作者简介:
      孙宏亮,硕士,浙江大学毕业,现为DaoCloud软件工程师,主要负责企业级容器云平台的研发工作。数年来一直从事云计算、PaaS领域的研究与实践,是国内较早一批接触Docker的先行者,同时也是Docker技术的推广者。
  • 目录:
    赞誉前言第1章 Docker架构1.1 引言1.2 Docker总架构图1.3 Docker各模块功能与实现分析1.3.1 Docker Client1.3.2 Docker Daemon1.3.3 Docker Registry1.3.4 Graph1.3.5 Driver1.3.6 libcontainer1.3.7 Docker Container1.4 Docker运行案例分析1.4.1 docker pull1.4.2 docker run1.5 总结第2章 Docker Client创建与命令执行2.1 引言2.2 创建Docker Client2.2.1 Docker命令的flag参数解析2.2.2 处理flag信息并收集Docker Client的配置信息2.2.3 如何创建Docker Client2.3 Docker命令执行2.3.1 Docker Client解析请求命令2.3.2 Docker Client执行请求命令2.4 总结第3章 启动Docker Daemon3.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 加载builtins3.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容器的MTU4.3.2 检测网桥配置信息4.3.3 查验容器间的通信配置4.3.4 处理网络功能配置4.3.5 处理PID文件配置4.4 检测系统支持及用户权限4.5 配置工作路径4.6 加载并配置graphdriver4.6.1 创建graphdriver4.6.2 验证btrfs与SELinux的兼容性4.6.3 创建容器仓库目录4.6.4 迁移容器至aufs类型4.6.5 创建镜像graph4.6.6 创建volumesdriver以及volumes graph4.6.7 创建TagStore4.7 配置Docker Daemon网络环境4.7.1 创建Docker网络设备4.7.2 启用iptables功能4.7.3 启用系统数据包转发功能4.7.4 创建DOCKER链4.7.5 注册处理方法至Engine4.8 创建graphdb并初始化4.9 创建execdriver4.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"的Job5.2.2 配置Job环境变量5.2.3 运行Job5.3 ServeApi运行流程5.4 ListenAndServe实现5.4.1 创建router路由实例5.4.2 创建listener监听实例5.4.3 创建http.Server5.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的iptables6.5.8 配置网络设备间数据报转发功能6.5.9 注册网络Handler6.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 Client7.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.Cmd7.6.2 启动exec.Cmd创建进程7.6.3 为容器进程初始化网络环境7.7 总结第8章 Docker镜像8.1 引言8.2 Docker镜像介绍8.3 rootfs8.4 Union Mount8.5 image8.6 layer8.7 总结第9章 Docker镜像下载9.1 引言9.2 Docker镜像下载流程9.3 Docker Client9.3.1 解析镜像参数9.3.2 配置认证信息9.3.3 发送API请求9.4 Docker Server9.4.1 解析请求参数9.4.2 创建并配置Job9.4.3 触发执行Job9.5 Docker Daemon9.5.1 解析Job参数9.5.2 创建session对象9.5.3 执行镜像下载9.6 总结第10章 Docker镜像存储10.1 引言10.2 镜像注册10.3 验证镜像ID10.4 创建镜像路径10.4.1 创建mnt、diff和layers子目录10.4.2 挂载祖先镜像并返回根目录10.5 存储镜像内容10.5.1 解压镜像内容10.5.2 收集镜像大小并记录10.5.3 存储jsonData信息10.6 注册镜像ID10.7 总结第11章 docker build实现11.1 引言11.2 docker build执行流程11.2.1 Docker Client与docker build11.2.2 Docker Server与docker build11.2.3 Docker Daemon与docker build11.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 LookupImage12.3.2 CheckDepth12.3.3 mergeAndVerifyConfig12.3.4 newContainer12.3.5 createRootfs12.3.6 ToDisk12.3.7 Register12.4 Docker Daemon启动容器12.4.1 setupContainerDns12.4.2 Mount12.4.3 initializeNetworking12.4.4 verifyDaemonSetting12.4.5 prepareVolumesForContainer12.4.6 setupLinkedContainers12.4.7 setupWorkingDirectory12.4.8 createDaemonEnvironment12.4.9 populateCommand12.4.10 setupMountsForContainer12.4.11 waitForStart12.5 总结第13章 dockerinit启动13.1 引言13.2 dockerinit介绍13.2.1 dockerinit初始化内容13.2.2 dockerinit与Docker Daemon13.3 dockerinit执行入口13.3.1 createCommand分析13.3.2 namespace.exec13.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 namespace13.5.5 dockerinit完成namespace配置13.5.6 dockerinit执行用户命令Entrypoint13.6 总结第14章 libcontainer介绍14.1 引言14.2 Docker、libcontainer以及LXC的关系14.3 libcontainer模块分析14.3.1 namespace14.3.2 cgroup14.3.3 网络14.3.4 挂载14.3.5 设备14.3.6 nsinit14.3.7 其他模块14.4 总结第15章 Swarm架构设计与实现15.1 引言15.2 Swarm架构15.2.1 Swarm Node15.2.2 Docker Node15.2.3 node discovery15.2.4 scheduler15.3 Swarm命令15.3.1 swarm create15.3.2 swarm manage15.3.3 swarm join15.3.4 swarm list15.4 总结第16章 Machine架构设计与实现16.1 引言16.2 Machine架构16.2.1 Machine16.2.2 Store16.2.3 Host16.2.4 Driver16.2.5 Provisioner16.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与Swarm17.5 总结
查看详情
好书推荐 / 更多
Docker源码分析
传统十论:本土社会的制度、文化与其变革
秦晖 著
Docker源码分析
翁达杰作品系列:英国病人(精装)
[加]迈克尔·翁达杰 著;丁骏 译
Docker源码分析
软件体的生命周期:特德·姜科幻小说集
[美]特德·姜
Docker源码分析
汉唐文学与文献论考
陈尚君 著
Docker源码分析
中国佛学源流略讲
吕澂 著
Docker源码分析
明清稿抄校本鉴定
陈先行、石菲 著
Docker源码分析
瓦檐下的旧器物
黄孝纪
Docker源码分析
索恩丛书·自由的流亡者:永失美国与大英帝国的东山再起(套装全2册)
马娅·亚桑诺夫(Maya Jasanoff) 著;马睿 译
Docker源码分析
维米尔
北寺 译 者;[英]路德维希·戈德沙伊德(Ludwig Goldscheider)
Docker源码分析
做工的人
林立青 著;赖小路 摄影
Docker源码分析
与绝迹之鸟的短暂邂逅
[美]本·方登 著
Docker源码分析
[日]吉田修一 Yoshida Shuichi 著;岳远坤 译