背景
在DockerCon17上,Docker发布了两个新的开源项目LinuxKit和Moby。而原来在Github上托管的docker也随着PR #32691的合入正式变为Moby。这究竟是什么情况?本文从Docker官方能够获取到的信息出发,让真相大白。
介绍
Docker官方已经正式发布了Moby项目的介绍:INTRODUCING MOBY PROJECT: A NEW OPEN-SOURCE PROJECT TO ADVANCE THE SOFTWARE CONTAINERIZATION MOVEMENT。
文章的标题直接阐明了Moby的意义:一个致力于推进软件容器化运动的开源项目
下面是官博上这篇文章我的译文,可供参考。
译文
从四年前Docker推广普及软件容器开始,围绕容器化的整个生态圈也随之蓬勃成长,并在这期间经历了两个不同的阶段。在这两个阶段中,用于生产容器系统的木星也在不断地演变进化以适应社区、项目以及贡献者生态圈的数量规模与需求。
Moby是个致力于推进软件容器化运动的开源项目,它提供一个组件库,一个将组件装配成定制化基于容器的系统的框架和一个所有容器发烧友试验与交流想法的场所。
让我们来回顾一下我们是如何走到今天的。在13-14年,(容器化运动)先驱者们使用容器在庞大的开源库如Docker何一些其它项目合作以帮助工具成熟起来。
在15-16年,容器被大规模应用到原生云应用。在这个阶段,凭借成败上千的容器生态项目与贡献者,用户社区规模成长到足以支撑大量的部署。正是在这个阶段,Docker将它的生产模型演进为一个基于开放式组件的解决方案。通过这样的方式,我们扩大了创新与协作的范围。
一些新颖而独立并且帮助合作方与用户社区生态的Docker组件项目正在迅速崛起。在这期间,我们将组件从Docker源码库中抽取并迅捷地创新,系统制作者可以独立地使用它们来构建自己的容器系统:runc, HyperKit, VPNKit, SwarmKit, InfraKit, containerd等等。
处在容器浪潮之巅,我们看到2017年的趋势是容器已然成为主流,在计算、服务器、数据中心、云、桌面应用、物联网和移动等领域广泛传播,包括各行业和垂类市场:金融、医疗、*、旅游、制造业,以及各用例:现代手机端应用、传统服务端应用、机器学习、工业控制系统、机器人。对于容器生态圈的新人,他们的共同点在于他们针对特定的基础设施、行业或者用例构建了自己特有的系统。
作为一家公司,Docker使用开源作为自己的开源实验室与整个生态圈进行合作。Docker的成功与容器生态圈的成功密不可分:生态圈成功,我们也即成功。因此,我们一直在规划者容器生态圈发展的下一个阶段:什么样的生产模型可以帮助我们扩展容器生态圈来实现让容器成为主流的承诺?
去年我们的客户开始寻求如Mac和Windows桌面、Windows服务器和例如AWS、Microsoft Azure或是Google Cloud Platform等一系列Linux之外的Docker解决方案。我们创建了一系列针对这些平台的Docker发行版。为了能够在相对比较短的时间内以小团队用一种可扩展而不重复造*的方式构建交付这些Docker版本,我们显然需要一种新的途径。借鉴汽车行业的装配重用组件以制造不同汽车的想法,我们的团队需要不仅在组件上,还需要在组件装配上进行协作。
我们认为在生态圈这一层进行组件组装的协作是将容器生态圈扩展到下一个高度以实现容器即主流的最佳方式。
为了实现这一心层次的合作,我们现在宣布Moby项目——一个致力于推进软件容器化运动的开源项目。它提供了一套组件的“乐高积木”,一个将组件装配成定制化基于容器的系统的框架和一个所有容器发烧友试验与交流想法的场所。把Moby想象成容器系统的“乐高俱乐部”吧。
Moby由以下几部分组成:
一个容器化的后端组件库(例如:一个低层builder,日志功能、数据卷管理、网络、镜像管理、containered、SwarmKit)
一个可以将这些组件装配成独立的容器平台并协助构建、测试、部署构件的框架
一个叫Moby Origin的参考——它是Docker容器平台的开放基础,同时也是使用来自Moby库或是其它项目的组件的容器系统样例。
Moby是为系统构建者——想构建自己的基于容器的系统的人设计的,而不是使用Docker或者其他容器平台的开发者。Moby项目的参与者可以选择派生自Docker的组件库,也可以“bring your own components(自带组件)” (BYOC),打包成可以混合搭配其他组件的容器来创建定制化的容器系统。
Docker使用Moby项目作为开放的研发实验室,用于试验、开发新组件并与生态圈就未来容器技术进行合作。我们所有的开源合作都会迁移到Moby项目。Docker现在、将来都一直会是一个可以让你构建、传播、运行容器的开源项目。从用户角度来说,一切都没有发生变化。用户可以继续在docker.com上下载Docker。关于更多信息,请参考more information about the respective roles of Docker and Moby on the Moby website。
请加入我们,通过组件与组装品的合作,一起让软件容器成为主流,扩大我们的生态圈和我们的用户社群到下一个高度。
评析
阅毕这篇官方博文,想比也已经大概了解了Docker与Moby的关系。可以说Moby是Docker之母。通过Moby可以将定制化的组件打包做成一个Docker,而Moby就相当于一个组件仓库与Docker工厂。Docker公司的这一举动可以说也是顺应了潮流,将Docker与操作系统解耦,并且将其以组件组装的形式模块化。可以说今后,操作系统也是Docker容器的一个基础组件。而Moby项目既是一个组件库又是一个框架,为今后组件制作与组装提供了一套规范。
上面的译文贴的来自原文的几张配图也非常有意思,我们也可以从图中理解Moby与Docker的关系。而Moby本身的Logo是一头鲸鱼的尾巴,我认为这个Logo的含义便是:你只看到了那会是Docker大鲸鱼,但是到底会是一头怎样的鲸鱼,便要通过Moby孕育才能看完整了。
当然,这一切对于使用Docker容器进行应用开发的开发者来说,其实关系并不是太大,甚至可以说目前来看几乎没什么影响。
在Docker官方仓库上我们可以看到已经写得很清楚:Moby主要针对的人群是想要组装一个基于容器的系统的人,包括
- 想要定制化Docker构建的hacker
- 想要构建一个容器系统的系统工程师
- 想要将已经存在的容器系统适配到自己环境的 基础设施提供方
- 想要体验最新容器技术的容器爱好者
- 想要在不同系统中测试项目的开源开发者
- 任何对Docker内部原理与如何构建感兴趣的人
但对于如下人群,Moby并不适合:
- 寻求一种简单的在容器中运行应用程序的应用开发者。推荐使用Docker CE。
- 想要一个带有商业支持且开箱即用容器平台的企业IT与开发团队。推荐使用Docker EE。
- 任何对容器感兴趣并且寻求一种简单易学的方式的人。请访问docker.com吧。
总结
回到本文标题,Docker改名为Moby了吗?答案已经很明确了,Docker仍然还在,仍然还叫Docker。只是Moby项目已经问世,它是Docker的上游项目,是Docker之母。正因如此,Docker这个名字也已经不适合作为原来源码库的名字了。而对于普通的容器个人使用者或者企业,影响并不是太大。对于一些容器系统厂商和组件提供方,Moby提供了一种新形式的协作平台,可以定制化、增强、适配容器系统等等。