Alan Hou的个人博客

精通Docker第三版 – 第十四章 Docker进阶

《精通Docker第三版》完整目录:

第一章 Docker概览
第二章 创建容器镜像
第三章 存储和发布镜像
第四章 管理容器
第五章 Docker Compose
第六章 Windows容器
第七章 Docker Machine
第八章 Docker Swarm
第九章 Docker和Kubernetes
第十章 在公有云上运行Docker
第十一章 Portainer – 一个Docker的GUI
第十二章 Docker安全
第十三章 Docker工作流
第十四章 Docker进阶

恭喜你学习到本书的最后一章,你坚持到了最后!本章中我们会来讲解Moby项目,以及如何向Docker及其社区作出贡献。最后我们会快速地概览下云原生计算基金会(Cloud Native Computing Foundation)。让我们以Moby项目的讨论来开启本章吧。

Moby项目

DockerCon 2017上发的一个Moby项目的公告。在宣布这个项目时,我有来自同事的一些关于这个项目是什么的疑问,因为从表面上,Docker好像是发布了另一套容器系统。

那么,我是如何回答的呢?经过几天的疑惑之后,我们通过如下回答进行了解答:

Moby项目是一个开源项目的统称,收录用于构建基于容器系统的多个库。该项目带有其自身的框架,将这些库合并到一个可用的系统以及一个名为Moby Origin的参考系统;将其看作一个让你可以构建甚至是自定义自己Docker的”Hello World”。

在我给出这个回答后发生了两种情况中的一种,显然人们的反应是但实际的含义是什么?我的回复是:

Moby项目是一个Docker(公司)的开源playground,任何其他人可对项目做贡献来开发新的功能并扩展库和框架的已有功能,在公共论坛中构成了各个基于容器的系统。其中的一个输出是称为Moby Origin的前沿试验容器系统,另一个为Docker(软件),以开源社区版或商业支持的企业版对外发布。

任何询问由前沿实验版本、稳定开源发行版和企业支持版的类似项目,我们通过 Red Hat企业版Linux来说明Red Hat所做的事:

将其看作Red Hat对Red Hat企业版Linux所采取的方法。有Fedora,这是Red Hat操作系统对开发人员的前沿实验版本开发playground,引入新包、新功能并删除老的、过时的组件 。通常,Fedora会比Red Hat企业版Linux的功能早一到两年,企业版是基于Fedora项目中工作的商业支持的长期发行版,这一发行版之后,你还有社区支持版本CentOS。

你可能会在想,为什么只在本书的最后提到这件事呢?在写本书时,这个项目仍处于襁褓之中。事实上,从主Docker项目中转换Moby项目所需的所有组件的工作仍在进行中。

在我写本书时,该项目唯一真实、可用的组件,是LinuxKit,它是整合所有库并输出一个可运行容器的启动系统那个框架。

因为这个项目有极其快速的节奏,我不会给出如何使用LinuxKit的示例或深入Moby的其它细节,因为在读者读到本书时很有可能都发生了变化,我的建议是收藏如下页面来跟进这一激动人心的开发的最新动态:

对Docker进行贡献

那你想要帮助Docker并做出贡献呢?你是否有一个好的想法,想要在Docker或其中一个组件中实现?我们来获取实现它所需的信息和工具。如果你不是一个编程人员,还有其它帮助贡献的方式。Docker有大量的受从,另一组贡献的方式是帮助对其它用户服务的支持。我们也来了解要如何做。

贡献代码

对Docker贡献的一种最大的方式是对Docker代码提供帮助。因为Docker是完全开源的,你可以下载代码到本机并开发新功能,以拉取请求再展示给Docker。这些请求会被定期审核,如果审核人员觉得你所贡献的代码应该出现在服务中,他们会同意这一拉取请求。如果你知道所编写的代码被接受了会觉得受宠若惊的。

首先你需要知道如何进行贡献前的设置:这基本上是Docker (https://github.com/docker/)和Moby项目 (https://github.com/moby/)的全部内容,我们在前面的部分中已经讲到了。但我们要如何准备做出帮助和贡献呢?起步最好的地方是遵循Docker官方文档中的指南:https://docs.docker.com/opensource/ways/。

你可能已经猜到了,无需做很多来启动和运行开发环境,因为大部分开发都在容器中完成了。例如,除拥有GitHub账号外,Docker列出了如下三个软件来作为最小的骨架:

你可以在后面的链接中找到如何准备自己的Docker开发的更多信息,Mac和Linux:https://docs.docker.com/opensource/project/software-required/,Windows用户:https://docs.docker.com/opensource/project/software-req-win/。

要成为一个成功的开源项目,必须要有一些社区指南。我推荐推荐阅读这一个快速启动指南:https://docs.docker.com/opensource/code/,以及更详细的贡献工作流文档:https://docs.docker.com/opensource/workflow/make-a-contribution/。

Docker有一个行为准则,涵盖了他们的员工以及社区作为一个整体应该做的事。它是开源的并使用知识共享署名3.0进行许可,内容如下:

完整的行为准则请见https://github.com/docker/code-of-conduct/。

提供Docker支持服务

你也可以通过贡献Docker代码或功能集以外的方式来做出贡献。你可以通过所获取的知识来在他们的支持渠道帮助其它人。社区非常开始,总有人愿意提供帮助。我在碰到问题抓耳挠腮时发现它总是很有帮助。获取帮助和回馈贡献帮助一样的棒,这是非常好的礼尚往来。也是一个收获想法供你使用的一个很好的地方。你可以看到其他人其于他们的配置所问的问题,这可能会激发你在自己环境中使用的一些想法。

你也可以关注GitHub上有关该服务产生的issues。这些可能是功能请求以及Docker如何实现它们,或者可能是通过服务的使用出现的问题。你可以测试其他人经历的问题来看你是否可以重现问题或者为他们的问题找到可能的解决方案。

Docker有一个非常活跃的社区:https://community.docker.com/,在这里,你不仅可以看到最新的社区新闻和事件,还能与Docker用户和开发人员在他们的Slack频道中进行交谈。在写本书时,有80个频道涵盖各类主题,如Dockerfor Mac, Docker for Windows, Alpine Linux, Swarm, 存储和网络,这只是其中的很少一部分,随时都有数百个用户在线。

最后,还有Docker论坛,地址为https://forums.docker.com/。如果你想要搜索主题、问题或关键词,这些都是很好的去处。

其它贡献

还有其它的对Docker贡献的方式。你还可以推广服务或在你的机构中激发兴趣等。你可以通过你们机构自己的通过方式来开始,不论是email分发列表、群聊、IT圆桌,还是常规的会议。

你还在自己的组织中组成会面来让其他人讨论。这些会面可设计为不仅包含你自己的组织,还有你组织所处的城市的其它成员,来获取更广泛的交流和服务的推广。

你可以通过访问https://www.docker.com/community/meetup-groups/.来查看在你的区域是否已经有组织好的会面。

云原生计算基金会(CNCF)

我们在第九章 Docker和Kubernetes中简短的讨论了云原生计算基金会(CNCF)。云原生计算基金会,或简称CNCF,的成立旨在提供厂牌中立的项目之家,来让你管理你的容器和微服务架构。

它的成员包括Docker, Amazon Web Services, Google Cloud, Microsoft Azure, Red Hat, Oracle, VMWare和Digital Ocean等等。2018年6月,Linux基金会报道称CNCF有238个成员。这些成员不仅贡献项目,还贡献工程时间、代码和资源。

毕业项目

在写本书时,已有两个毕业项目,这此前章节中均已讨论。这两个无疑也是所有项目该基金会维护的项目中最知名的两个项目,分别为:

项目要达到如下要求才能毕业:

同时还有其它项目状态,这也是其它大部分项目当前所处的状态。

孵化项目

处于孵化阶段的项目最终应会有一个毕业状态。下面的项目都做了如下的事:

TOC重度的参与这些项目来确保活跃级别足以满足前述的标准,因为每个项目的指标都会不同。

当前的项目列表如下:

我们已经在本书的不同章节中使用了其中的几个项目,我相信你在解决路由到容器和在你的环境中监控自己的应用等问题时其它项目也会引起你的兴趣。

CNCF全景

CNCF提供了一个由他们和他们的成员管理的的所有项目的交互地图,请见https://landscape.cncf.io/。其中一个重要的信息如下:

You are viewing 590 cards with a total of 1,227,036 stars, a market cap of $6.52T, and funding of $16.3B

译者注:保留了原文,数量在持续增长,下面增加了一张交互地图的图片版

我相信你会同意这些数字很可观,但意义是什么呢?感谢CNCF所做的工作,我们有了Kubernetes等项目,提供一套标准化的工作集、API 和方法来在多个云基础设施供应商平台上以及自有平台和裸机服务-提供基石来供你创建和部署自己的高可用、可扩展和高性能容器及微服务应用。

总结

我希望本章给你了一些下一步进阶容器之旅的想法。我发现的一件事情是虽然使用这些服务很简单,但成为一个巨大、友好且热情的开发人员和其它像你一样涌现在不同软件和项目中的用户的社区的一部分会大有裨益。

这种社区感和协助由云原生计算基金会这种形式又进一步进行了强化。这聚集了很多大企业,在几年前,他们还不会想到对外与其它在大规模项目上视作竞争对手的其它企业产生协作。

退出移动版