Foreword 序一
信息技术领域一直试图解决的核心问题之一是提供强大的计算能力。在过去很长一段时间里,我们可以依靠硬件性能的提升来提高物理计算资源的能力,提升处理器的主频或者增加每个处理器里面的处理核心的数量。然而这个时代随着摩尔定律无法胜过物理定律而不得不终结。
在云计算时代,信息技术所面临的难题则截然不同。分布式、虚拟化、大数据……每一项挑战都不是仅仅依靠硬件或软件的局部优化就能得到解决的,更需要通过高效的资源利用来“压榨”计算平台的每一点运算能力。
作为充分发掘计算平台能力的Linux容器虚拟化技术,在近些年得到广泛的关注和发展。从早期IBM发起的LXC项目,到今天如火如荼的Docker项目,这些不断涌现的创新项目给计算模式本身带来了巨大的变革。市面上关于传统虚拟机相关技术的书籍有不少,但是探讨容器虚拟化技术的著作寥寥无几。尽管互联网上已经出现了很多关于容器虚拟化、Docker的文章,但这些文章或过于简略,或仅关注某个技术方面,总体上缺少系统化的从概念、到实现、到如何使用的介绍。这给广大信息产业从业人员了解最新的技术潮流带来了不小的障碍。
值得庆幸的是,能够第一时间拜读这本《Docker技术入门与实战》。作为国内开发者撰写的首本探讨Docker容器虚拟化技术的书籍,一方面它深入浅出地讲解了Docker应用的诸多话题,包括围绕镜像、容器、仓库等核心概念如何来实现“Build、Ship、Run”的高效流程;另一方面,难能可贵的是书中提供了大量翔实的实战案例,涵盖DevOps领域的典型场景。无论是Docker技术的初学者还是业内的一线研发人员或资深专家,本书都值得一阅。
作者之一的杨保华博士在加入IBM之后,一直从事云计算与软件定义网络领域的相关解决方案和核心技术的研发,热心关注OpenStack、Docker等开源社区,热衷使用开源技术,并积极参与开源社区的讨论、积极提交代码。这使得他既能从宏观上准确把握Docker技术在整个云计算产业中的定位,又能从微观上清晰理解技术人员所渴望获知的核心之处。
如果你只是Docker的初学者,阅读本书,或许并不能让你立刻成为行业内的专业人士,但一定能让你马上体会Docker技术所带来的众多优势。如果你已经开始使用Docker,阅读本书也可以帮助你解答实践中的一些问题,帮助你更恰当地使用Docker技术。本书深入浅出,讲解到位,是一本值得常置案头的好书。
刘天成
IBM中国研究院,云计算运维技术研究组经理
2014年11月
Foreword 序二
最近的几年,云计算是计算机与互联网界的焦点,它的广泛应用离不开虚拟化技术的支持。作为Linux下的容器虚拟化工具,Docker以其轻便易用而受人关注。
这本书向读者清晰地介绍了Docker这个虚拟化工具;详细比较了Docker和传统虚拟机在组织架构、实现技术和性能上的差异。在此基础上,本书围绕着镜像、容器、仓库三个部分,从实践的角度出发,讲解了Docker的安装、配置、使用的方式。在本书的后面几个章节,也介绍了许多Docker的实现细节和工作原理。总体而言,本书从实际的案例入手,由浅至深,循序渐进,内容相当丰富。
对于正在寻找虚拟化工具的用户来说,年轻而有活力的Docker项目绝对是首选。而如果你正在使用或打算使用Docker,或者想学习一些新的技术以丰富自己,那就一定不要错过这本书。书中有大量的实践案例、完备的细节讲解,将这本书常备于手边,比起查阅复杂繁琐的文档,能为工作或学习节省更多的时间。
王灿
浙江大学计算机学院副教教授
2014年11月
前言 Preface
在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦。而在一台服务器上同时运行一千个Docker容器,这已经成为现实。在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实。
多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷……为了解决这些问题,开源社区推出过不少优秀的工具。这些方案虽然在某些程度上确能解决部分“燃眉之急”,但是始终没有一种方案能带来“一劳永逸”的效果。
让作为企业最核心资源的工程师们花费大量的时间,去解决各种环境和配置引发的 Bug,这真的正常吗?
回顾计算机的发展历程,最初,程序设计人员需要直接操作各种枯燥的机器指令,编程效率之低可想而知。高级语言的诞生,将机器指令的具体实现成功抽象出来,从此揭开了计算机编程效率突飞猛进的大时代。那么,为什么不能把类似的理念(抽象与分层)也引入到现代的研发和运维领域呢?
Docker无疑在这一方向上迈出了具有革新意义的一步。笔者在刚接触Docker时,就为它所能带来的敏捷工作流程而深深吸引,也为它能充分挖掘云计算资源的效能而兴奋不已。我们深信,Docker的出现,必将给DevOps技术,甚至整个信息技术产业的发展带来深远的影响。
笔者曾尝试编写了介绍Docker技术的中文开源文档。短短一个月的时间,竟收到了来自全球各个地区超过20万次的阅读量和全五星的好评。这让我们看到国内技术界对于新兴开源技术的敏锐嗅觉和迫切需求,同时也倍感压力,生怕其中有不妥之处,影响了大家学习和推广Docker技术的热情。在开源文档撰写过程中,我们一直在不断思考,在生产实践中到底怎么用Docker才是合理的?在“华章图书”的帮助下,终于有了现在读者手中的这本书。
与很多技术类书籍不同,本书中避免一上来就讲述冗长的故事,而是试图深入浅出、直奔主题,在最短时间内让读者理解和掌握最关键的技术点,并且配合实际操作案例和精炼的点评,给读者提供真正可以上手的实战指南。
本书在结构上分为三大部分。第一部分是Docker技术的基础知识介绍,这部分将让读者对Docker技术能做什么有个全局的认识;第二部分将具体讲解各种典型场景的应用案例,供读者体会Docker在实际应用中的高效秘诀;第三部分将讨论一些偏技术环节的高级话题,试图让读者理解Docker在设计上的工程美学。最后的附录归纳了应用Docker的常见问题和一些常用的参考资料。读者可根据自身需求选择阅读重点。全书主要由杨保华和戴王剑主笔,曹亚仑写作了编程开发和实践之道章节。
本书在写作过程中参考了官方网站上的部分文档,并得到了DockerPool技术社区网友们的积极反馈和支持,在此一并感谢!
成稿之际,Docker已经发布了增强安全特性的1.32版本。衷心祝愿Docker及相关技术能够快速成长和成熟,让众多IT从业人员的工作和生活都更加健康、更加美好!
作者于2014年11月
作者简介 About the Authors
杨保华 清华大学博士毕业,现为IBM中国研究院研究员。主要从事数据中心网络解决方案的研发与部署,技术方向包括云计算、软件定义网络(SDN)、网络安全等,是国内较早从事SDN和网络虚拟化相关技术的推广者,同时也是DockerPool开源社区的发起人之一。他的个人主页为yeasy.github.io。
在本书的写作期间,得到了我的父母亲和妻子吴俞萱女士的关怀与支持,得到了公司领导和同事们的信任与鼓励,特别是刘天成帮忙审阅了部分内容。在此表示最深厚的感谢!
戴王剑 资深架构师,从事计算机网络、服务器架构设计多年,负责过多个省级项目的架构设计。热衷开源事业,是DockerPool开源社区的发起人之一。
写作期间,我的女儿戴子萱刚刚出生,感谢我的父母亲以及我的妻子刘乃华对我的大力支持,没有你们的辛勤付出,我不可能安心写完这本书,我爱你们!在这里一并感谢公司领导和同事对我的信任,感谢郭捷给予的硬件支持,在经过半年左右的测试之后,Docker在公司的项目中正式上线,并给我们的开发、测试、生产带来了实实在在的效率。特别感谢我的导师:浙江师范大学杨传斌教授,没有杨老师,我可能在毕业前就放弃从事IT行业了。本书的出版能得到杨老师的肯定,是最让我开心的事。
曹亚仑 85后,全栈Web开发者,擅长并专注于SaaS系统架构设计与研发,兴趣方向为PaaS和智能可穿戴设备。译著有《Arduino无线传感器网络实践指南》,开源图书有《程序员禅修指南》。
我要感谢我的父母和妻子丁小芬,感谢你们在我写书过程中所给予的帮助和支持,我爱你们。