Docker 为什么创建了 Moby Project

原文链接:http://www.cio.com/article/3191344/linux/why-Docker-created-the-moby-project.html

译注:Docker 官推转发了这篇(算是钦定?)就看了一眼,本文以 Docker 公司一家之言的角度描述了为什么要推出 Moby,仅供参考。另外,文中的 Docker 既可以指容器管理程序也可以是公司,注意根据语境区分。


Moby 项目是一个让所有人都能组装自己的容器的框架,这是本文的背景。

成为主流,也肩负了责任——Solomon Hykes

Docker 在过去的两年里经历了指数级增长,DockerHub 的下载量从1亿增加到了60亿,为了保持这一增速,Docker 选择打破现有的一体化结构,分为更小的开源组件,包括 containerd, libnetwork, swarmkit, LinuxKit。

开源这些组件让 Docker 和 Docker 生态系统能基于这些组件进行更高效的协作,还能帮助 Docker 将自己的平台模块化和弹性化;尽管这也意味着 Docker 自己也必须去集成、协调这些组件用于构建 Docker 平台。

这给 Docker 带来了特殊的挑战。

因为一切都被容器化了,承受着使用标准、通用的组件去支持数量不断上升的定制平台的压力的人就不只是 Docker 一家;有很多新手也希望在使用这些开源组件的时候定制化 Docker。

这本不应该是一个问题,这些都是基于标准的开源技术,那么你只需要把它们拼在一起他们就能神奇的跑起来,是吗?

那可不一定。

因为 Docker 开始使用 LinuxKit 这样的组件来构建定制化版本,他们发现自己的产品模型被破坏了,他们开始发现自己做了很多无用功。

原本很美好的事情变得糟糕了起来。

他们发现模块化设计也意味着需要不同的团队去推进不同的开源组件来构建定制化的系统,这是大量的组装工作、各个团队将有一大堆工作需要独立去完成,这导致了重复和无用的工作。

尽管 Docker 很流行,但是 Docker 公司还是相对小的——只有约150雇员负责所有的这一切工作。当 Docker 公司在一个新平台上开始开发新版本的时候,他们并不能拿出几百个工程师投入这个项目,身为小团队他们无法承受重复的工作——重复的工作也违反了开源的目的——致力于复用代码,避免造轮子。

与其说问题出在组件化本身,不如说在于平台搭建的过程。

在描述 Docker 如何解决其工程问题时,Docker 的创始人兼首席技术官 Solomon Hykes 以汽车行业为例:不同型号的汽车共享相同的组件,如发动机,车轮和底盘,但更重要的是,它们在组装过程中共享或协作,使其不会重复。

参考了汽车行业的模式,Docker 在其内部划出了一块空间,除了在开源组件方面与生态系统的交互合作,所有团队都在这里基于通用组件上展开协同工作。 这减少了无用、重复和冗余的工作。

Hykes 表示,每个版本的 Docker 平均配有三四名工程师,从第一行代码到第一个测试版通常需要三到六个月开发时间。

这个内部装配项目解决了 Docker 自己的问题。但在容器的生态系统中,开源组件和生态系统参与者依旧存在上述的严重问题。 所以 Docker 决定开放它研究出来的组装模式。 “Docker是这个容器生态系统的公民,只有这个生态系统成功了,Docker 才能成功,”Hykes说。

Docker 把它所了解的一切——过程,工具,组件,框架等——并且贡献给一个非常接近 Hykes 理想的新项目。

这个项目称为 Moby

其核心在于:Moby 项目允许任何人以一个非常有效的方式组装自己的容器系统,避免任何重复、无用的工作。

Moby 项目有三个核心组成部分:

  1. Docker 后端组件库(例如,底层的构建器,日志设备,卷管理,网络,镜像管理,containerd,SwarmKit 等)
  2. 用于将组件组装到独立容器平台中的框架,以及用于构建、测试和部署这些组件的工件的工具。
  3. 称为 Moby Origin 的参考组件,它是 Docker 容器平台的开放式基础,以及使用 Moby 库或其他项目中各种组件的容器系统示例。

除了80多个核心库和框架之外,Moby 项目提供了开箱可用的参考组件,任何人都可以使用它来衍生出自己的系统。 用户也可以根据自己的需求进行修改,也可以基于此抛砖引玉构建自己的系统。

Moby 项目将允许参与者使用框架来引入自己的组件,组成自己的项目,并在 Moby 内部建立自己的社区。 “你不必捐赠你的代码; 您不必更改代码。 所有您需要做的是带上您的代码,构建,组合,协作,交流想法… Moby 是一个开放的合作场所,”Hykes 说,“如果您是系统构建者,这意味着您可以更有效率地开展协作和参与定义系统,而不受 Docker 的限制。”

Moby 项目将成为 Docker 的核心。 Hykes表示,对 Docker 组件的所有开放源代码贡献,发送到 Docker 项目任何一个的 Pull request 都将发到 Moby。 Moby 将是 Docker 测试,集成和讨论组件设计的地方;将是讨论 Docker 如何整合各个部分的地方。

“本质上说,Docker 正在建立一个以 Docker 为核心的生态系统乐高俱乐部。”Docker 营销副总裁 David Messina 说道。

Moby 项目将成为 Docker 部署激进实验性特性的地方,将是你看到 Docker 下一个版本的地方。

Moby 项目之于 Docker 正如 Fedora 之于 RHEL

Docker 的首席开发倡导者 Patrick Chanezon 告诉我,在2003年之后,Red Hat 将 Linux 内核和大量组件整合进了 Fedora 合作项目。 2017年,Docker 对于容器要在 Moby 项目上的事情也是一样的。

“我们从一开始就确定了这是一个社区运行的项目。 受到过去的一些成功的类似项目的启发,我们正在设计一种开放式治理模式”,Hykes 赞赏了 Fedora 和 Red Hat。 “我们不是在这里重新发明轮子,我们站在巨人的肩膀上。”

这是否意味着 Moby 项目也将成为独立组织管理的独立项目? Docker 首席执行官 Ben Golub 告诉我,Moby 项目不会被捐赠给外部组织,Moby 是 Docker 赞助的项目,正如 Fedora 是 Red Hat 赞助的项目一样。

发表评论

电子邮件地址不会被公开。 必填项已用*标注