美亚排名超高的Docker入门书,不止简单易懂
在美国亚马逊,有一本书的影响力超高的Docker入门书,在操作系统分类中排行第一,超越了众多实力派Docker书,众多五星好评。也许你有所耳闻,这本书就是《深入浅出Docker》。
这是一本关于Docker的图书。这本书的宗旨是从零开始学习Docker,因此你无须任何前置知识储备。如果你对Docker感兴趣,希望了解Docker工作原理以及如何正确使用Docker,则本书适合你。同时本书也可作为Docker认证工程师考试的参考图书。
本书作者
Nigel Poulton,亚马逊畅销图书作者,Docker Captain(Docker官方项目),存储专家,Docker技术先驱。Nigel有丰富的运维技术经验,著有多部容器相关的图书,并开设了视频培训课程。除了线上途径,他还热衷于开展线下会议讲座。他活跃于Docker Captain计划社区,致力于创造世界上最好的Docker和容器学习资源,在业界有非常大的影响力。
Docker Captain计划:Docker Captain是Docker官方颁发给社区中那些既精通各自领域又热衷于与他人分享Docker知识的成员的奖项。Captain和Docker专家分享他们的专业知识和经验,他们对Docker的发展产生了巨大的影响——无论是线上支持,还是线下活动——Docker技术的普及在他们的努力下成为可能。
Docker认证工程师(Docker Certified Associate)
Docker于2017年秋发布了第1版专业资质认证,称为Docker认证工程师(Docker Certified Associate, DCA),面向想要评估自身Docker管理水平的人群。
本书覆盖了认证考试的所有知识点,但本书并非应试书,而是一本易于阅读的实用技术图书。
祝愿读者考试顺利!
为什么要阅读本书,为什么要关注Docker
如今Docker无处不在,这是不争的事实。开发人员都很喜欢它,运维工程师也需要它。他们都需要深入了解如何在关键业务环境中构建和维护符合生产级别要求的容器化应用,本书将帮助读者掌握它。
Docker仅能供开发人员所用吗
对于认为Docker是开发人员专属工具的人来说,恐怕要准备好颠覆自己的认知了。
容器化应用需要有地方运行,也需要有人来管理。如果认为只是开发人员来管理它,那就大错特错了,事实上运维需要构建和运行高性能、生产级别的Docker基础架构。对于专注于运维工作却尚未掌握Docker的朋友来说,日子恐怕不太好过。不过不必焦虑,本书将帮你掌握Docker。
如何读本书?
本书分为两部分。
Docker概览篇:本篇介绍Docker公司(Docker, Inc.)、Docker(Moby)项目、什么是OCI、为什么需要容器等。如果读者想要对Docker和容器有一个全面的了解,则需要阅读这些内容。
Docker技术篇:本篇是全书的主要内容,包含了掌握Docker所需的所有知识。这部分会详细介绍镜像、容器,以及越来越重要的关于编排的知识。此外,本书甚至还介绍了企业应用中比较关心的技术,比如TLS、RBAC、与AD的集成,以及备份。读者不仅能够了解相关的概念和原理,还能够参考本书给出的命令和例子进行练习。
Docker技术篇的多数章节都可以分为3个部分——简介、详解和命令。
“简介”部分是大约两三段的简要介绍,用于概括性地阐述相应章节的内容,也能够方便读者在复习时快速回忆相关的内容。
“详解”部分会详细介绍工作原理,并配有示例的介绍。
“命令”部分会以一种易于阅读的方式列出所有相关命令及其简要说明。
希望读者能够喜欢这种方式。
提到Docker时你该了解什么?
关于容器技术的图书和探讨总是不可避免地涉及Docker。但是当有人提到“Docker”时,可能是指如下3种概念之一。
Docker公司。
Docker的容器运行时和编排引擎。
Docker开源项目(Moby)。
如果读者希望在容器的世界中有所作为,那么需要对以上3个内容都有所了解。
Docker——简介
Docker是一种运行于Linux和Windows上的软件,用于创建、管理和编排容器。Docker是在GitHub上开发的Moby开源项目的一部分。Docker公司,位于旧金山,是整个Moby开源项目的维护者。Docker公司还提供包含支持服务的商业版本的Docker。
以上是一个简要介绍。下面针对每个概念进行详细介绍。此外还包含对容器生态的探讨,以及对开放容器计划(Open Container Initiative, OCI)的介绍。
Docker公司
Docker公司位于旧金山,由法裔美籍开发者和企业家Solumon Hykes创立,其标志如图1所示。
有意思的是,Docker公司起初是一家名为dotCloud的平台即服务(Platform-as-a-Service, PaaS)提供商。底层技术上,dotCloud平台利用了Linux容器技术。为了方便创建和管理这些容器,dotCloud开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的!
2013年,dotCloud的PaaS业务并不景气,公司需要寻求新的突破。于是他们聘请了Ben Golub作为新的CEO,将公司重命名为“Docker”,放弃dotCloud PaaS平台,怀揣着“将Docker和容器技术推向全世界”的使命,开启了一段新的征程。
如今Docker公司被普遍认为是一家创新型科技公司,据说其市场价值约为10亿美元。在本书撰写时,Docker公司已经通过多轮融资,吸纳了来自硅谷的几家风投公司的累计超过2.4亿美元的投资。几乎所有的融资都发生在公司更名为“Docker”之后。
图1 Docker标志
公司更名为Docker之后,进行了几次小规模的未公开价格的收购,来丰富其产品和服务组合。
至本书撰写时,Docker公司拥有约300~400名雇员,并举办名为DockerCon的年度会议。DockerCon的目标是聚拢不断发展的容器生态,并促进Docker和容器技术的推广。
本书将始终使用“Docker公司”来指代Docker这家公司,其他地方出现的“Docker”都是指容器技术或开源项目。
注:“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。
Docker运行时与编排引擎
多数技术人员在谈到Docker时,主要是指Docker引擎。
Docker引擎是用于运行和编排容器的基础设施工具。有VMware管理经验的读者可以将其类比为ESXi。ESXi是运行虚拟机的核心管理程序,而Docker引擎是运行容器的核心容器运行时。
其他Docker公司或第三方的产品都是围绕Docker引擎进行开发和集成的。如图2所示,Docker引擎位于中心,其他产品基于Docker引擎的核心功能进行集成。
Docker引擎可以从Docker网站下载,也可以基于GitHub上的源码进行构建。无论是开源版本还是商业版本,都有Linux和Windows版本。
在本书撰写时,Docker引擎主要有两个版本:企业版(EE)和社区版(CE)。
每个季度,企业版和社区版都会发布一个稳定版本。社区版本会提供4个月的支持,而企业版本会提供12个月的支持。
社区版还会通过Edge方式发布月度版。
图2 围绕Docker引擎进行开发和集成的产品
从2017年第一季度开始,Docker版本号遵循YY.MM-xx格式,类似于Ubuntu等项目。例如,2018年6月第一次发布的社区版本为18.06.0-ce。
注:2017年第一季度以前,Docker版本号遵循大版本号.小版本号的格式。采用新格式前的最后一个版本是Docker 1.13。
Docker开源项目(Moby)
“Docker”一词也会用于指代开源Docker项目。其中包含一系列可以从Docker官网下载和安装的工具,比如Docker服务端和Docker客户端。不过,该项目在2017年于Austin举办的DockerCon上正式命名为Moby项目。由于这次改名,GitHub上的docker/docker库也被转移到了moby/moby,并且拥有了项目自己的Logo,如图3所示。
图3 Moby的Logo
Moby项目的目标是基于开源的方式,发展成为Docker上游,并将Docker拆分为更多的模块化组件。Moby项目托管于GitHub的Moby代码库,包括子项目和工具列表。核心的Docker引擎项目位于GitHub的moby/moby,但是引擎中的代码正持续被拆分和模块化。
作为一个开源项目,其源码是公开可得的,在遵循Apache协议2.0的情况下,任何人都可以自由地下载、贡献、调整和使用。
如果查看项目的提交历史,可以发现其中包含来自如下公司的基础技术:红帽、微软、IBM、思科,以及HPE。此外,还可以看到一些并非来自大公司的贡献者。
多数项目及其工具都是基于Golang编写的,这是谷歌推出的一种新的系统级编程语言,又叫Go语言。使用Go语言的读者,将更容易为该项目贡献代码。
Mody/Docker作为开源项目的好处在于其所有的设计和开发都是开放的,并摒弃了私有代码闭源开发模式下的陈旧方法。因此发布过程也是公开进行的,不会再出现某个秘密的版本提前几个月就宣布要召开发布会和庆功会的荒唐情况。Moby/Docker不是这样运作的,项目中多数内容都是开放并欢迎任何人查看和作出贡献的。
Moby项目以及更广泛的Docker运动一时间掀起了一波热潮。GitHub上已经有数以千计的提交请求(pull request),以及数以万计的基于容器化技术的项目了,更不用说Docker Hub上数十亿的镜像下载。Moby项目已经给软件产业带来了翻天覆地的变化。
这并非妄想,Docker已经得到了广泛的应用!
容器生态
Docker公司的一个核心哲学通常被称为“含电池,但可拆卸”(Batteries included but removable)。
意思是许多Docker内置的组件都可以替换为第三方的组件,网络技术栈就是一个很好的例子。Docker核心产品内置有网络解决方案。但是网络技术栈是可插拔的,这意味着Docker内置的网络方案可以被替换为第三方的方案。许多人都会这样使用。
早期的时候,经常出现第三方插件比 Docker 提供的内置组件更好的情况。然而这会对Docker公司的商业模式造成冲击。毕竟,Docker公司需要依靠盈利来维持基业长青。因此,“内置的电池”变得越来越好用了。这也导致了生态内部的紧张关系和竞争的加剧。
简单来说,Docker内置的“电池”仍然是可插拔的,然而越来越不需要将它们移除了。
尽管如此,容器生态在一种良性的合作与竞争的平衡中还是得以繁荣发展。在谈及容器生态时,人们经常使用到诸如“co-opetition”[1]与“frenemy”[2]这样的字眼。这是一个好现象!因为良性的竞争是创新之母。
[1] 意即合作与竞争,英文中co-operation与competition合并的词。——译者注 [2] 英文中朋友friend与敌人enemy合并的词。——译者注
开放容器计划
如果不谈及开放容器计划(The Open Container Initiative, OCI)的话,对Docker和容器生态的探讨总是不完整的。图4所示为OCI的Logo。
图4 OCI的Logo
OCI是一个旨在对容器基础架构中的基础组件(如镜像格式与容器运行时,如果对这些概念不熟悉的话,不要担心,本书后续会介绍到它们)进行标准化的管理委员会。
同样,如果不谈历史的话,对OCI的探讨也是不完整的。和所有的历史记录一样,其版本取决于谁来讲述它。所以,以下是我眼中的容器历史。
我讲述的这段简短的历史是,一个名为CoreOS的公司不喜欢Docker的某些行事方式。因此它就创建了一个新的开源标准,称作“appc”,该标准涉及诸如镜像格式和容器运行时等方面。此外它还开发了一个名为rkt(发音“rocket”)的实现。
两个处于竞争状态的标准将容器生态置于一种尴尬的境地。
这使容器生态陷入了分裂的危险中,同时也令用户和消费者陷入两难。虽然竞争是一件好事,但是标准的竞争通常不是。因为它会导致困扰,降低用户接受度,对谁都无益。
考虑到这一点,所有相关方都尽力用成熟的方式处理此事,共同成立了OCI——一个旨在管理容器标准的轻量级的、敏捷型的委员会。
在本书写作时,OCI已经发布了两份规范(标准):镜像规范和运行时规范。
提到这两项标准时,经常用到的比喻就是铁轨。它们就像对铁轨的尺寸和相关属性达成一致,让所有人都能自由地建造更好的火车、更好的车厢、更好的信号系统、更好的车站等。只要各方都遵循标准就是安全的。没人会希望在铁轨尺寸问题上存在两个相互竞争的标准!
公平地说,这两个OCI规范对Docker的架构和核心产品设计产生了显著影响。Docker 1.11版本中,Docker引擎架构已经遵循OCI运行时规范了。
到目前为止,OCI已经取得了不错的成效,将容器生态团结起来。然而,标准总是会减慢创新的步伐!尤其是对于超快速发展的新技术来说更是如此。这在容器社区引起了热烈的讨论。以我之见,这是好事!容器技术正在重塑世界,走在技术前列的人们有热情、有想法,这很正常。期待关于标准和创新有更加热烈的讨论!
OCI在Linux基金会的支持下运作,Docker公司和CoreOS公司都是主要贡献者。
【英】Nigel Poulton(奈吉尔 波尔顿)
本文转载自异步社区
原文链接:https://www.epubit.com/articleDetails?id=N25cbbffa-c380-45ba-8588-8de8499bc07d
- 点赞
- 收藏
- 关注作者
评论(0)