Docker源码分析

Docker源码分析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2015-08
版次: 1
ISBN: 9787111510727
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 247页
308人买过
  •   《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 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生态中其他功能强大的软件。
  • 作者简介:
      孙宏亮,硕士,浙江大学毕业,现为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与Kubernetes容器虚拟化技术与应用
倪振松 刘宏嘉 陈建平 主编;谢岳富 副主编
Docker源码分析
Doctor-Patient Communication 医患沟通(英文版)(创新教材)
王锦帆;尹梅
Docker源码分析
Docker+Kubernetes容器实战派
赵渝强
Docker源码分析
Docker容器技术与应用项目教程(微课版)
崔升广
Docker源码分析
Docker快速入门
赵荣娇
Docker源码分析
Docker与Kubernetes容器运维实战
王启明 肖志健
Docker源码分析
Docker容器管理与应用项目教程
吴进 杨运强
Docker源码分析
Docker实战派——容器入门七步法
王嘉涛
Docker源码分析
Docker容器技术
张婵 王新强
Docker源码分析
Docker容器项目实战
龚斌
Docker源码分析
Doris实时数仓实战
王春波 著
Docker源码分析
Do Re Mi幼儿趣味识谱(全四册精美礼盒装)(超简单的幼儿乐谱读写)
高桥千佳子
您可能感兴趣 / 更多
Docker源码分析
长江经济带生态环境保护修复进展报告.2020
孙宏亮 著
Docker源码分析
饮用水水源地生态环境保护与管理
孙宏亮、井柳新、郜志云、刘锦华、杨晶晶 著
Docker源码分析
黄土高原上的荷马-(陕北盲说书人研究)
孙宏亮
Docker源码分析
弹起三弦定准音:陕北说书考察
孙宏亮
Docker源码分析
中医辨证施治:消化系统疑难病
孙宏亮 主编;张静