内容简介
本书根据Docker 1.10版和Kubernetes 1.2版对第1版进行了全面更新,从实践者的角度出发,以Docker和Kubernetes为重点,沿着“基本用法介绍”到“核心原理解读”到“高级实践技巧”的思路,一本书讲透当前主流的容器和容器云技术,有助于读者在实际场景中利用Docker容器和容器云解决问题并启发新的思考。全书包括两部分,首部分深入解读Docker容器技术,包括Docker架构与设计、核心源码解读和高级实践技巧;第二部分归纳和比较了三类基于Docker的主流容器云项目,包括专注Docker容器编排与部署的容器云、专注应用支撑的容器云以及一切皆容器的Kubernetes,进而详细解读了Kubernetes核心源码的设计与实现,介绍了几种典型场景下的Kubernetes实践。本书适用于有一定Docker基础的开发者、架构师、IT专业学生以及探索基于Docker构建云计算平台的技术人员,也非常适合作为高校教材或培训资料。 作者简介
浙江大学软件工程实验室(Software Engineering Lab,SEL)云计算团队组建于2011年,组织博士和硕士研究生搭建、分析和钻研开源的云计算技术,包括Docker、Kubernetes、Cloud Foundry、OpenStack、CloudStack、Eucalyptus、Convirt、OpenShift等,积极为开源社区贡献代码,管理和参与线上线下讨论社区,参加国内外云计算技术峰会并发言。以开源社区为技术交流研发平台,浙江大学 目录
第一部分 Docker深入解读 第1章 从容器到容器云 2 1.1 云计算平台 2 1.2 容器,新的革命 3 1.3 进化:从容器到容器云 7 第2章 Docker 基础 8 2.1 Docker的安装 8 2.2 Docker操作参数解读 9 2.3 搭建你的第一个Docker应用栈 16 2.3.1 Docker集群部署 16 2.3.2 第一个Hello World 17 2.3.3 开发、测试和发布一体化 27 第3章 Docker核心原理解读 28 3.1 Docker背后的内核知识 28 3.1.1 namespace资源隔离 28 3.1.2 cgroups资源限制 45 3.2 Docker架构概览 53 3.2.1 Docker daemon 54 3.2.2 Docker client 54 3.2.3 镜像管理 54 3.2.4 execdriver、volumedriver、graphdriver 55 3.2.5 network 55 3.3 client和daemon 56 3.3.1 client模式 56 3.3.2 daemon模式 58 3.3.3 从client到daemon 64 3.4 libcontainer 67 3.4.1 libcontainer的工作方式 69 3.4.2 libcontainer实现原理 70 3.4.3 使用runC与libcontainer进行交互 75 3.5 Docker镜像管理 77 3.5.1 什么是Docker镜像 77 3.5.2 Docker镜像关键概念 80 3.5.3 Docker镜像构建操作 81 3.5.4 Docker镜像的分发方法 84 3.6 Docker存储管理 87 3.6.1 Docker镜像元数据管理 87 3.6.2 Docker存储驱动 89 3.7 Docker数据卷 99 3.7.1 数据卷的使用方式 100 3.7.2 数据卷原理解读 105 3.8 Docker网络管理 108 3.8.1 Docker网络基础 108 3.8.2 Docker daemon网络配置原理 116 3.8.3 libcontainer网络配置原理 119 3.8.4 传统的link原理解析 125 3.8.5 新的link介绍 127 3.9 Docker与容器安全 129 3.9.1 Docker的安全机制 129 3.9.2 Docker安全问题 135 3.9.3 Docker安全的解决方案 139 第4章 Docker 高级实践技巧 151 4.1 容器化思维 151 4.1.1 SSH服务器的替代方案 151 4.1.2 Docker内应用日志管理方案 152 4.1.3 容器化思维及更多 153 4.2 Docker高级网络实践 153 4.2.1 玩转Linux networknamespace 154 4.2.2 pipework原理解析 159 4.2.3 pipework跨主机通信 165 4.2.4 OVS划分VLAN 170 4.2.5 OVS隧道模式 174 4.3 Dockerfile最佳实践 187 4.3.1 Dockerfile的使用 187 4.3.2 Dockerfile实践心得 191 4.4 Docker容器的监控手段 193 4.4.1 Docker容器监控维度 194 4.4.2 容器监控命令 195 4.4.3 常用的容器监控工具 197 4.5 容器化应用构建的基础:高可用配置中心 201 4.5.1 etcd经典应用场景 201 4.5.2 etcd实现原理 206 第二部分 Docker云平台解读 第5章 构建自己的容器云 222 5.1 再谈云平台的层次架构 222 5.2 从小工到专家 225 第6章 专注编排与部署:三剑客与Fleet 230 6.1 编排小神器Fig/Compose 230 6.1.1 再谈容器编排与部署 230 6.1.2 Compose原理:一探究竟 233 6.2 跨平台宿主环境管理工具Machine 237 6.2.1 Machine与虚拟机软件 237 6.2.2 Machine与IaaS平台 238 6.2.3 Machine小结 239 6.3 集群抽象工具Swarm 240 6.3.1 Swarm简介 240 6.3.2 试用Swarm 241 6.3.3 Swarm集群的多种创建方式 243 6.3.4 Swarm对请求的处理 245 6.3.5 Swarm集群的调度策略 245 6.3.6 Swarm集群高可用(HA) 246 6.3.7 Swarm与Machine 247 6.3.8 Swarm小结 248 6.4 编排之秀Fleet 248 6.4.1 旧问题新角度:Docker distro 249 6.4.2 Fleet的原理剖析 252 第7章 专注应用支撑和运行时:Flynn和Deis 258 7.1 Flynn,一个小而美的两层架构 258 7.1.1 第0层:容器云的基础设施 259 7.1.2 第1层:容器云的功能框架 259 7.1.3 Flynn体系架构与实现原理 260 7.2 谈谈Deis与Flynn 270 7.2.1 应用发布上的比较 271 7.2.2 关于Deis的一些思考 273 第8章 一切皆容器:Kubernetes 274 8.1 Kubernetes是个什么样的项目 274 8.2 Kubernetes的设计解读 275 8.2.1 一个典型案例:Guestbook 275 8.2.2 pod设计解读 277 8.2.3 replication controller设计解读 288 8.2.4 service的设计解读 294 8.2.5 新一代副本控制器replica set 306 8.2.6 Deployment 307 8.2.7 DaemonSet 312 8.2.8 ConfigMap 312 8.2.9 Job 317 8.2.10 Horizontal Pod Autoscaler 318 8.3 Kubernetes核心组件解读 320 8.3.1 Kubernetes的整体架构 320 8.3.2 APIServer 321 8.3.3 scheduler 328 8.3.4 controller manager 338 8.3.5 kubelet 346 8.3.6 kube-proxy 352 8.3.7 核心组件协作流程 362 8.4 Kubernetes存储核心原理 366 8.4.1 volume设计解读 366 8.4.2 volume实现原理分析 367 8.4.3 volume使用案例 368 8.4.4 persistent volume 371 8.5 Kubernetes网络核心原理 372 8.5.1 单pod单IP模型 373 8.5.2 pod和网络容器 374 8.5.3 实现Kubernetes的网络模型 377 8.6 Kubernetes多租户管理与资源控制 381 8.6.1 namespace设计解读 381 8.6.2 Kubernetes用户认证机制 385 8.6.3 Kubernetes用户授权机制 387 8.6.4 Kubernetes多维资源管理机制admission control 390 8.7 Kubernetes高级实践 402 8.7.1 应用健康检查 402 8.7.2 高可用性 405 8.7.3 日志 408 8.7.4 集成DNS 410 8.7.5 容器上下文环境 412 8.8 Kubernetes未来动向 414 8.8.1 Ubernetes 414 8.8.2 petSet 415 8.8.3 performance 417 8.8.4 rescheduler 417 8.8.5 OCI标准 419 8.9 不要停止思考 419 第三部分 附录 附录A Docker的安装 424 附录B 阅读Docker源代码的神兵利器 432 附录C 快速熟悉开源项目 441 附录D cgroups的测试与使用 444 附录E cgroups子系统配置参数介绍 448 附录F Kubernetes的安装 453 后记 457
|