Docker 容器与容器云(第2版)pdf

图书网 2018年8月23日09:04:33
评论
3.5K
摘要

1.本书以源码解读为基础,以构建Docker云平台为目标,通过回答实际项目中的问题为线索,全面解析Docker原理。这是国内首部在解读Docker原理的同时深入实践Docker三件套和云平台的图书,也是国内首部深入解读Kubernetes的图书。
2.基于Docker新版本,新增runc和libnetwork两个全新而又十分重要的概念。
3.基于Kubernetes 1.2新版本,全面解读volume plugin、secret、auto scaling等全新特性。

Docker 容器与容器云(第2版) 内容简介

本书根据Docker 1.10版和Kubernetes 1.2版对第1版进行了全面更新,从实践者的角度出发,以Docker和Kubernetes为重点,沿着“基本用法介绍”到“核心原理解读”到“高级实践技巧”的思路,一本书讲透当前主流的容器和容器云技术,有助于读者在实际场景中利用Docker容器和容器云解决问题并启发新的思考。全书包括两部分,首部分深入解读Docker容器技术,包括Docker架构与设计、核心源码解读和高级实践技巧;第二部分归纳和比较了三类基于Docker的主流容器云项目,包括专注Docker容器编排与部署的容器云、专注应用支撑的容器云以及一切皆容器的Kubernetes,进而详细解读了Kubernetes核心源码的设计与实现,介绍了几种典型场景下的Kubernetes实践。

本书适用于有一定Docker基础的开发者、架构师、IT专业学生以及探索基于Docker构建云计算平台的技术人员,也非常适合作为高校教材或培训资料。

Docker 容器与容器云(第2版) 目录

第一部分 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

Docker 容器与容器云(第2版) 精彩文摘

2013年初,一个名字从云计算领域横空出世,并在整个IT行业激起千层浪。这就是Docker——一个孕育着新思想的“容器”。Docker选择容器作为核心和基础,依靠容器技术支撑的Docker迅速成为国内外各大云计算厂商以及开发者手中的至宝。在一片热火朝天之中,新的革命已经悄然来临。

1.1 云计算平台

回首历史,云计算时代蕴育出了众多的云计算平台,虽然在服务类型或平台功能上有所差异,但它们的本质上如出一辙,都与NIST 对于云计算平台的定义有着密切的关系。

云计算是一种资源的服务模式,该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络、服务器、存储、应用及服务),资源能够快速供应并释放,大大减少了资源管理工作开销,你甚至可以再也不用理会那些令人头痛的传统服务供应商了。

经典云计算架构包括IaaS(Infrastructure as a Service,基础设施即服务)、PaaS(Platform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三层服务,如图1-1所示。

IaaS层为基础设施运维人员服务,提供计算、存储、网络及其他基础资源,云平台使用者可以在上面部署和运行包括操作系统和应用程序在内的任意软件,无需再为基础设施的管理而分心。

PaaS层为应用开发人员服务,提供支撑应用运行所需的软件运行时环境、相关工具与服务,如数据库服务、日志服务、监控服务等,让应用开发者可以专注于核心业务的开发。

SaaS层为一般用户服务,提供了一套完整可用的软件系统,让一般用户无需关注技术细节,只需通过浏览器、应用客户端等方式就能使用部署在云上的应用服务。

图1-1 云平台经典架构

同时,随着计算机技术推陈出新,应用的规模愈发庞大,逻辑愈发复杂,迭代更新愈发频繁,应用开发所需的统一规范和原有开发模式杂乱无章成了追求进步的主要障碍。在尖锐的矛盾中,云时代应用生命周期管理机制(Application Lifecycle Management,ALM)和十二要素应用规范(The Twelve-Factor App) 应运而生。

所有理论设计和预想一定是美好的,只是对于一个新的理论而言,如何经受住实践的考验,并将美好的愿景转化为生产力才是重中之重。IaaS的发展主要以虚拟机为最小粒度的资源调度单位,出现了资源利用率低、调度分发缓慢、软件栈环境不统一等一系列问题。PaaS在IaaS基础上发展而来,众多PaaS已经意识到可以利用容器技术解决资源利用率问题,但是PaaS通常在应用架构选择、支持的软件环境服务方面有较大的限制,这带来了应用与平台无法解耦、应用运行时环境局限性强、运维人员控制力下降的问题。

可见不论IaaS还是PaaS都有各自适用的场景,但依旧存在诸多缺陷,人们亟需一个真正可用的解决方案。

图书网:Docker 容器与容器云(第2版)pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: