猜你喜欢
Docker技术入门与实战 第2版

Docker技术入门与实战 第2版

书籍作者:杨保华 ISBN:9787111555827
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8422
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书从Docker基本原理开始,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署Docker应用。本书分为四大部分:基础入门、实战案例、进阶技能、开源项目,第一部分(第1~8章)介绍Docker与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据卷,端口映射等;第二部分(第9~16章)通过案例介绍Docker的应用方法,包括与各种操作系统平台、SSH服务的镜像、Web服务器与应用、数据库的应用、各类编程语言的接口、容器云等,还介绍了作者在容器实战中的思考与经验总结;第三部分(第17~21章)是一些进阶技能,如Docker核心技术实现原理、安全、高级网络配置、libernetwork插件化网络功能等;第四部分(第22~28章)介绍与容器开发相关的开源项目,包括Etcd、Docker Machine、Docker Compose、Docker Swarm、Mesos、Kubernetes等。

第2版参照Docker技术的*新进展对全书内容进行了修订,并增加了第四部分专门介绍与容器相关的知名开源项目,利用好这些优秀的开源平台,可以更好地在生产实践中受益。


作者简介

杨保华:博士,毕业于清华大学,现为 IBM 资深研究员。主要负责核心系统方案的架构设计和研发,包括云计算、大数据、金融科技等领域。他热爱开源文化,是容器、软件定义网络、区块链等开源技术的早期推广者,曾为 OpenStack、HyperLedger 等开源项目作出了贡献。个人主页为 https://yeasy.github.com。

戴王剑:资深架构师,多年来一直从事系统平台、计算机网络、服务器架构设计,负责过多个省级项目的架构设计。热衷于开源事业,积极推动开源技术在生产实践中的应用。

曹亚仑:阿里云高级系统工程师(花名法喜),上云架构师,擅长云产品运维与云平台技术保障,对PaaS、IaaS层架构设计与实践有较丰富的实战经验。同时也是DevOps实践者与全栈开发者。微信allengaller,个人主页为allengaller.github.io。


编辑推荐

畅销书《Docker技术入门与实战》升级版,基于Docker 1.12及以上版本对全书内容进行了修订,增加了第四部分专门介绍与容器相关的知名开源项目,利用好这些优秀的开源平台,可以更好地在生产实践中使用Docker。本书内容系统全面,开发者案头必备图书

前言

Preface 第2版前言

自云计算步入市场算起,新一代计算技术刚好走过了第一个十年。

在过去十年里,围绕计算、存储、网络三大基础服务,围绕敏捷服务和规模处理两大核心诉求,新的概念、模式和工具争相涌现。这些创新的开源技术成果,提高了整个信息产业的生产效率,降低了应用信息技术的门槛,让“互联网+”成为可能。

如果说软件定义网络(SDN)和网络功能虚拟化(NFV)让互联网络的虚拟化进入了崭新的阶段,那么容器技术的出现,毫无疑问称得上计算虚拟化技术的又一大创新。从Linux Container到Docker,看似是计算技术发展的一小步,却是极为重要的历史性突破。容器带来的不仅仅是技术体验上的改进,更多的是新的开发模式、新的应用场景、新的业务可能……

容器技术自身在快速演进的同时,笔者也很欣喜地看到,围绕着容器的开源生态系统越发繁盛。Docker三剑客Machine、Compose、Swarm相辅相成,集团作战;搜索巨人则推出Kubernetes,领航新一代容器化应用集群平台;还有Mesos、CoreOS,以及其他众多的开源工具。这些工具的出现,弥补了现有容器技术栈的不足,极大地丰富了容器技术的应用场景,增强了容器技术在更多领域的竞争力。

在第2版中,笔者参照容器技术最新进展对全书内容进行了修订完善,并增加了第四部分专门介绍与容器相关的知名开源项目,利用好这些优秀的开源平台,可以更好地在生产实践中受益。

成书之际,Docker发布了1.13版本,带来了更稳定的性能和更多有趣的特性。

再次感谢容器技术,感谢开源文化,希望开源技术能得到更多的支持和贡献!

最后,IBM中国研究院的刘天成、李玉博等帮忙审阅了部分内容,在此表达最深厚的感谢!


杨保华

2016年12月于北京



第1版前言 Preface

在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实。

多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷……为了解决这些问题,开源社区推出过不少优秀的工具。这些方案虽然在某些程度上确能解决部分“燃眉之急”,但是始终没有一种方案能带来“一劳永逸”的效果。

让作为企业最核心资源的工程师们花费大量的时间,去解决各种环境和配置引发的 Bug,这真的正常吗?

回顾计算机的发展历程,最初,程序设计人员需要直接操作各种枯燥的机器指令,编程效率之低可想而知。高级语言的诞生,将机器指令的具体实现成功抽象出来,从此揭开了计算机编程效率突飞猛进的大时代。那么,为什么不能把类似的理念(抽象与分层)也引入到现代的研发和运维领域呢?

Docker无疑在这一方向上迈出了具有革新意义的一步。笔者在刚接触Docker时,就为它所能带来的敏捷工作流程而深深吸引,也为它能充分挖掘云计算资源的效能而兴奋不已。我们深信,Docker的出现,必将给DevOps技术,甚至整个信息技术产业的发展带来深远的影响。

笔者曾尝试编写了介绍Docker技术的中文开源文档。短短一个月的时间,竟收到了来自全球各个地区超过20万次的阅读量和全五星的好评。这让我们看到国内技术界对于新兴开源技术的敏锐嗅觉和迫切需求,同时也倍感压力,生怕其中有不妥之处,影响了大家学习和推广Docker技术的热情。在开源文档撰写过程中,我们一直在不断思考,在生产实践中到底怎么用Docker才是合理的?在“华章图书”的帮助下,终于有了现在读者手中的这本书。

与很多技术类书籍不同,本书中避免一上来就讲述冗长的故事,而是试图深入浅出、直奔主题,在最短时间内让读者理解和掌握最关键的技术点,并且配合实际操作案例和精炼的点评,给读者提供真正可以上手的实战指南。

本书在结构上分为三大部分。第一部分是Docker技术的基础知识介绍,这部分将让读者对Docker技术能做什么有个全局的认识;第二部分将具体讲解各种典型场景的应用案例,供读者体会Docker在实际应用中的高效秘诀;第三部分将讨论一些偏技术环节的高级话题,试图让读者理解Docker在设计上的工程美学。最后的附录归纳了应用Docker的常见问题和一些常用的参考资料。读者可根据自身需求选择阅读重点。全书主要由杨保华和戴王剑主笔,曹亚仑写作了编程开发和实践之道章节。

本书在写作过程中参考了官方网站上的部分文档,并得到了DockerPool技术社区网友们的积极反馈和支持,在此一并感谢!

成稿之际,Docker已经发布了增强安全特性的1.3.2版本。衷心祝愿Docker及相关技术能够快速成长和成熟,让众多IT从业人员的工作和生活都更加健康、更加美好!


作者于2014年11月


目录

第2版前言

第1版前言

第一部分 基础入门

第1章 初识容器与Docker 3

1.1 什么是Docker 3

1.2 为什么要使用Docker 5

1.3 Docker与虚拟化 7

1.4 本章小结 9

第2章 核心概念与安装配置 10

2.1 核心概念 10

2.2 安装Docker 11

2.2.1 Ubuntu环境下安装Docker 12

2.2.2 CentOS环境下安装Docker 14

2.2.3 通过脚本安装 14

2.2.4 Mac OS环境下安装Docker 15

2.2.5 Windows环境下安装Docker 20

2.3 配置Docker服务 21

2.4 推荐实践环境 22

2.5 本章小结 22

第3章 使用Docker镜像 23

3.1 获取镜像 23

3.2 查看镜像信息 25

3.3 搜寻镜像 28

3.4 删除镜像 29

3.5 创建镜像 31

3.6 存出和载入镜像 32

3.7 上传镜像 33

3.8 本章小结 33

第4章 操作Docker容器 34

4.1 创建容器 34

4.2 终止容器 39

4.3 进入容器 40

4.4 删除容器 42

4.5 导入和导出容器 42

4.6 本章小结 44

第5章 访问Docker仓库 45

5.1 Docker Hub公共镜像市场 45

5.2 时速云镜像市场 47

5.3 搭建本地私有仓库 48

5.4 本章小结 50

第6章 Docker数据管理 51

6.1 数据卷 51

6.2 数据卷容器 52

6.3 利用数据卷容器来迁移数据 53

6.4 本章小结 54

第7章 端口映射与容器互联 55

7.1 端口映射实现访问容器 55

7.2 互联机制实现便捷互访 57

7.3 本章小结 59

第8章 使用Dockerfile创建镜像 60

8.1 基本结构 60

8.2 指令说明 62

8.3 创建镜像 67

8.4 使用.dockerignore文件 67

8.5 最佳实践 67

8.6 本章小结 68

第二部分 实战案例

第9章 操作系统 71

9.1 BusyBox 71

9.2 Alpine 72

9.3 Debian/Ubuntu 74

9.4 CentOS/Fedora 76

9.5 本章小结 77

第10章 为镜像添加SSH服务 78

10.1 基于commit命令创建 78

10.2 使用Dockerfile创建 80

10.3 本章小结 82

第11章 Web服务与应用 83

11.1 Apache 83

11.2 Nginx 87

11.3 Tomcat 88

11.4 Jetty 92

11.5 LAMP 93

11.6 CMS 94

11.6.1 WordPress 94

11.6.2 Ghost 96

11.7 持续开发与管理 96

11.7.1 Jenkins 97

11.7.2 Gitlab 98

11.8 本章小结 99

第12章 数据库应用 100

12.1 MySQL 100

12.2 MongoDB 102

12.2.1 使用官方镜像 102

12.2.2 使用自定义Dockerfile 104

12.3 Redis 106

12.4 Memcached 108

12.5 CouchDB 108

12.6 Cassandra 109

12.7 本章小结 110

第13章 分布式处理与大数据平台 111

13.1 RabbitMQ 111

13.2 Celery 113

13.3 Hadoop 114

13.4 Spark 115

13.4.1 使用官方镜像 116

13.4.2 验证 116

13.5 Storm 117

13.6 Elasticsearch 119

13.7 本章小结 120

第14章 编程开发 121

14.1 C/C++ 121

14.1.1 GCC 121

14.1.2 LLVM 122

14.1.3 Clang 122

14.2 Java 123

14.3 Python 124

14.3.1 使用官方的Python镜像 124

14.3.2 使用PyPy 124

14.4 JavaScript 125

14.5 Go 127

14.5.1 搭建并运行Go容器 127

14.5.2 Beego 130

14.5.3 Gogs:基于Go的Git服务 130

14.6 PHP 130

14.7 Ruby 132

14.7.1 使用Ruby官方镜像 132

14.7.2 JRuby 133

14.7.3 Ruby on Rails 134

14.8 Perl 135

14.9 R 136

14.10 Erlang 138

14.11 本章小结 140

第15章 容器与云服务 141

15.1 公有云容器服务 141

15.1.1 AWS 141

15.1.2 Google Cloud Platform 142

15.1.3 Azure 143

15.1.4 腾讯云 144

15.1.5 阿里云 144

15.1.6 华为云 144

15.1.7 UCloud 145

15.2 容器云服务 145

15.2.1 基本要素与关键特性 146

15.2.2 网易蜂巢 146

15.2.3 时速云 147

15.2.4 Daocloud 148

15.2.5 灵雀云 148

15.2.6 数人云 149

15.3 阿里云容器服务 150

15.4 时速云容器平台 151

15.5 本章小结 153

第16章 容器实战思考 154

16.1 Docker为什么会成功 154

16.2 研发人员该如何看容器 155

16.3 容器化开发模式 156

16.4 容器与生产环境 158

16.5 本章小结 160

第三部分 进阶技能

第17章 Docker核心实现技术 163

17.1 基本架构 163

17.2 命名空间 165

17.3 控制组 167

17.4 联合文件系统 169

17.5 Linux网络虚拟化 171

17.6 本章小结 174

第18章 配置私有仓库 175

18.1 安装Docker Registry 175

18.2 配置TLS证书 177

18.3 管理访问权限 178

18.4 配置Registry 181

18.4.1 示例配置 181

18.4.2 选项 183

18.5 批量管理镜像 188

18.6 使用通知系统 190

18.6.1 相关配置 190

18.6.2 Notif?ication的使用场景 192

18.7 本章小结 193

第19章 安全防护与配置 194

19.1 命名空间隔离的安全 194

19.2 控制组资源控制的安全 195

19.3 内核能力机制 195

19.4 Docker服务端的防护 197

19.5 更多安全特性的使用 197

19.6 使用第三方检测工具 198

19.6.1 Docker Bench 198

19.6.2 clair 199

19.7 本章小结 199

第20章 高级网络功能 201

20.1 网络启动与配置参数 201

20.2 配置容器DNS和主机名 203

20.3 容器访问控制 204

20.4 映射容器端口到宿主主机的实现 206

20.5 配置docker0网桥 207

20.6 自定义网桥 208

20.7 使用OpenvSwitch网桥 209

20.8 创建一个点到点连接 211

20.9 本章小结 212

第21章 libnetwork插件化网络功能 213

21.1 容器网络模型 213

21.2 Docker网络相关命令 215

21.3 构建跨主机容器网络 216

21.4 本章小结 219

第四部分 开源项目

第22章 Etcd——高可用的键值数据库 223

22.1 简介 223

22.2 安装和使用Etcd 224

22.3 使用etcdctl客户端 228

22.3.1 数据类操作 230

22.3.2 非数据类操作 233

22.4 Etcd集群管理 236

22.4.1 构建集群 236

22.4.2 集群参数配置 238

22.5 本章小结 240

第23章 Docker三剑客之Docker Machine 241

23.1 简介 241

23.2 安装Machine 241

23.3 使用Machine 243

23.4 Machine命令 244

23.5 本章小结 247

第24章 Docker三剑客之Docker Compose 248

24.1 简介 248

24.2 安装与卸载 249

24.3 Compose命令说明 252

24.4 Compose环境变量 257

24.5 Compose模板文件 257

24.6 Compose应用案例一:Web负载均衡 266

24.7 Compose应用案例二:大数据Spark集群 271

24.8 本章小结 273

第25章 Docker三剑客之Docker Swarm 274

25.1 简介 274

25.2 安装Swarm 275

25.3 使用Swarm 277

25.4 使用其他服务发现后端 281

25.5 Swarm中的调度器 282

25.6 Swarm中的过滤器 284

25.7 本章小结 286

第26章 Mesos——优秀的集群资源调度平台 287

26.1 简介 287

26.2 Mesos安装与使用 288

26.3 原理与架构 296

26.3.1 架构 296

26.3.2 基本单元 297

26.3.3 调度 297

26.3.4 高可用性 298

26.4 Mesos配置项解析 299

26.4.1 通用项 299

26.4.2 master专属项 299

26.4.3 slave专属项 301

26.5 日志与监控 304

26.6 常见应用框架 306

26.7 本章小结 307

第27章 Kubernetes——生产级容器集群平台 308

27.1 简介 308

27.2 核心概念 309

27.2.1 集群组件 311

27.2.2 资源抽象 312

27.2.3 辅助概念 315

27.3 快速体验 318

27.4 安装部署 322

27.5 重要组件 331

27.5.1 Etcd 332

27.5.2 kube-apiserver 332

27.5.3 kube-scheduler 333

27.5.4 kube-controller-manager 333

27.5.5 kubelet 334

27.5.6 kube-proxy 335

27.6 使用kubectl 337

27.6.1 获取kubectl 337

27.6.2 命令格式 337

27.6.3 全局参数 338

27.6.4 子命令 339

27.7 网络设计 351

27.8 本章小结 353

第28章 其他相关项目 354

28.1 平台即服务方案 354

28.1.1 Deis 354

28.1.2 Flynn 355

28.2 持续集成平台Drone 355

28.3 容器管理 357

28.3.1 Citadel 357

28.3.2 Shipyard 358

28.3.3 DockerUI 358

28.3.4 Panamax 358

28.3.5 Seagull 359

28.3.6 Dockerboard 361

28.4 编程开发 362

28.5 网络支持 363

28.5.1 pipework 363

28.5.2 Flannel 364

28.5.3 Weave Net 364

28.5.4 Calico 365

28.6 日志处理 366

28.6.1 Docker-Fluentd 366

28.6.2 Logspout 367

28.6.3 Sematext-agent-docker 368

28.7 服务代理工具 368

28.7.1 Traefik 369

28.7.2 Muguet 370

28.7.3 nginx-proxy 370

28.8 标准与规范 372

28.9 其他项目 375

28.9.1 CoreOS 375

28.9.2 OpenStack支持 375

28.9.3 dockerize 376

28.9.4 Unikernel 378

28.9.5 容器化的虚拟机 378

28.10 本章小结 379

附录

附录A 常见问题总结 382

附录B Docker命令查询 388

附录C 参考资源链接 393


产品特色