展开全部

主编推荐语

一本引导读者深入了解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生态中其他功能强大的软件。

目录

  • 版权信息
  • 赞誉
  • 前言
  • 第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 总结
展开全部

评分及书评

评分不足
2个评分
  • 用户头像
    给这本书评了
    5.0

    Docker 公司在今年的全球开发者大会上提出了 “Production Ready” 的口号,有越来越多的互联网公司和传统企业采用 Docker 来构建开发、测试和运维平台。Docker 在网络、存储、安全等领域的细节,是平台建设者和维护者必须深入了解的部分,这些领域还在不断变化,新的项目也层出不穷,但本书对网络、存储和安全的基本知识和概念,做了非常清晰的介绍,也深入到了底层实现的代码。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。