背景

在DockerCon17上,Docker发布了两个新的开源项目LinuxKitMoby。而原来在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由以下几部分组成:

  1. 一个容器化的后端组件库(例如:一个低层builder,日志功能、数据卷管理、网络、镜像管理、containered、SwarmKit)

  2. 一个可以将这些组件装配成独立的容器平台并协助构建、测试、部署构件的框架

  3. 一个叫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提供了一种新形式的协作平台,可以定制化、增强、适配容器系统等等。

参考

Docker改名为Moby了吗?的更多相关文章

  1. 在CentOS上为Docker开启SELinux

    a { color: #4183C4; text-decoration: none } a:hover { text-decoration: underline } ul,ol { padding-l ...

  2. 容器化-Docker介绍

    导读:本文章对Docker技术进行了介绍,阐述了Docker的技术发展历程.容器与虚拟机的差异.Docker原理.特点.Docker三组件和Docker带来的影响,为我们进一步理解Docker打下基础 ...

  3. Docker学习笔记之Docker 的简历

    0x00 概述 在了解虚拟化和容器技术后,我们就更容易理解 Docker 的相关知识了.在这一小节中,我将介绍关于 Docker 的出现和发展,Docker 背后的技术.同时,我们将阐述 Docker ...

  4. [转载]Docker 完全指南

    Docker 完全指南 原作者地址: https://wdxtub.com/2017/05/01/docker-guide/  发表于 2017-05-01 |  更新于 2017-08-03 |   ...

  5. CentOS 7 安装Docker CE

    本节内容: 背景 Moby项目 安装Docker CE 卸载Docker CE 一.背景 在搭建Registry的过程中,发现使用Docker 1.12版本,在push镜像到Registry时会报错误 ...

  6. .net core 在 Docker 开发下的巨坑

    一,Docker 的安装 Windows 安装  Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontain ...

  7. 极简Docker和Kubernetes发展史

    2013年 Docker项目开源 2013年,以AWS及OpenStack,以Cloud Foundry为代表的开源Pass项目,成了云计算领域的一股清流,pass提供了一种"应用托管&qu ...

  8. 【转帖】极简Docker和Kubernetes发展史

    极简Docker和Kubernetes发展史 https://www.cnblogs.com/chenqionghe/p/11454248.html 2013年 Docker项目开源 2013年,以A ...

  9. Docker容器(一)——Docker的介绍与部署

    (1).Docker概述 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化.容器是 ...

随机推荐

  1. I3D Next-Gen Game Development with Unity3D Vol I学习笔记(上)

    这部教程主题是讲述如何在Unity中安放模型以及对场景进行优化(面对的是次世代平台).第二章看到一半,看不下,索性直接凭借Maya和Torque的经验自己操作. 看教程总结的原则如下(or tips) ...

  2. maven新建的项目,不自动引入依赖包

    1.检查repository的目录是不是纯英文. 2.重新下载一次repository.   如果解决了问题,那么原因就是前面在加载repository的时候,因为断网导致了下载的包有误,无法被ecl ...

  3. 红黑树 C++实现

    #ifndef __RED_BLACK_TREE_H__ #define __RED_BLACK_TREE_H__ namespace lxf { template <typename Key, ...

  4. category类别中添加属性

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0. ...

  5. swift -- 单例

    方式一: (类似OC) class SingletonDispatch{ class var shareInstance : SingletonDispatch { //结构体 struct Stat ...

  6. java properties 对list的支持

    经测试,原生的properties 对 list 不支持. 参考样例如下: id=1 id=2 具体代码如下: java.util.Properties prop = new Properties() ...

  7. WCF请求数据:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。

    通常情况下,写好WCF服务后都会用自带的WCFClient工具进行测试,在进行时数据请求的时候,如果返回数据量超过默认接收值的时候就会提示如图异常错误. 错误也提示的很清楚,无非就是修改接收值大小的问 ...

  8. Ajax写分页查询(实现不刷新页面)

    获取数据库中大量的信息显示在页面上,必然要使用到分页查询: 若不使用Ajax,而是用其他的方法,肯定是要刷新页面的,用户体检很不好, 所以最好使用Ajax的方法写分页查询: 1.先来找一张数据很多的表 ...

  9. ehcache 使用笔记

    要想使用 java 的本地缓存,可以考虑用 ehcache,或者 guava. guava 更高端一点,可以自动定时刷新.我选择了 ehcache. 在 spring 中是集成了 ehcache 的. ...

  10. android国际化

    语言的国际化 为了提供不同语言的版本,只需要在res中新建几个values文件夹就行 不过文件夹有自己的命名规则 values-语言代码-r国家或者地区的代码 然后我们只需要将不同语言的string. ...