BT

你的观点很重要! 快来参与InfoQ调研吧!

全面解读Moby和LinuxKit,Docker称沟通不善招致误解

| 作者 木环 关注 1 他的粉丝 发布于 2017年5月3日. 估计阅读时间: 26 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

开源圈的一股怒火

这段时间,开源圈子有一股怒火, Docker公司发表声明称会将原有的Docker开源项目停掉,另起炉灶开了Moby项目。

这番声明居然的正面反馈(280票)和负面反馈(1198),好评率居然仅有18.9%。大家纷纷谴责“Docker直接把原Docker项目改名成Moby,开源突然商业化”的行为。

而另一方面,Docker公司又在解释:Moby并不是Docker的替代品,它的本意是希望帮助系统工程师使用Moby这个工具集去构建类似于Docker的平台。(Moby is not a replacement for Docker: it's a framework to help system engineers build platforms like Docker out of many components.)

Docker的CTO Solomon Hykes称此举是为了更好地打造并丰富开放容器生态,并不是走向封闭;圈内的误解都是公司沟通不善的锅。

面对争执,Docker表示很无辜。

不是走向封闭,而是更开放

一位michaelfavia网友表示Docker项目的今天是社区努力的共同结果;同时,他所在的公司目前重度使用Docker项目,转变技术栈为时已晚。虽然从Docker的商业利益角度而言,这无可厚非;但是他不赞同这种做法。

Docker的CTO Solomon Hykes则回复到其实项目并没有走向闭源,所有过去开源的会继续开源,甚至会有更多的开源出来。事实上,如果某家公司业务是基于此,Moby的变化反而是好事;Docker公司会更多地致力场景的定制化。

Moby的定位

Solomon表示Moby项目是产品链路中的一环,从上游到下游的项目依次为:

上游组件(containerd,linuxkit等)-> Moby -> Docker CE -> Docker EE

短期内, Docker CE和EE的用户不会受到影响

随后一位frekele的网友表示感谢后续的解释,但是希望可以读到docker to moby的指导指南,这样大家在下一个发布版本之前可以更清楚地了解发生了什么,会有哪些影响。

Solomon Hykes表示短期内Docker CE和EE的用户不会受到影响,下一个二进制发行版本不会发生变化。Moby会有自己的发布流程,会在后续讨论。

求证,Moby项目究竟意欲何为?

那么不如,摆事实讲道理,看看究竟是怎样一回事。

Docker声明1Moby并不是Docker的替代品。将引擎拆分为更多开放组件,对我们用于组装Docker产品的各新型工具与组件进行开源并供技术社区使用。

事实1:

  • 分解Docker工作已经进行一段时间了,比如已经完成的runC和containerd。其中containerd已经捐献给了CNCF。

  • Docker 1.11版本起,即2016年5月,Engine开始基于containerd、runC,可看作Moby项目缘起。而再往前追溯,OCI协会于2015年6月,呼吁业界制定容器运行时和格式的规范。

判断1DIY式工具集——Docker公司将原来大家熟知的Docker开源项目的拆分成不同模块,然后形成一个乐高式的容器化工具集。Moby并不完全等同于原来的Docker项目,Docker公司不是强取豪夺,它确实还付出了一番努力的。

Docker声明2:本意是希望帮助系统工程师使用Moby这个工具集去构建类似于Docker的平台。

事实2:

  • Moby项目包含三大元素:一款用于对系统进行组装、实验与测试的工具链框架; 一套包含约80种容器化组件的库(适用平台包括裸机,如x86与ARM; Linux、Mac与Windows可执行文件; 面向各主流云及虚拟化供应商产品的虚拟机镜像); 以及一份“参考蓝图”,即提供细节信息以帮助用户了解如何利用众多组件片段组合系统方案。其中部分组件片段可同时用于容器化应用堆栈以及Linux发行版——例如Redis或Nginx。其中亦包括Docker公司过去几个月间向开源社区贡献的部分成果,包括containerd及LinuxKit。
  • 还有一个事情注意的是,除了Moby项目之外,Docker还同期发布了另外一个新项目LinuxKit。LinuxKit可以对多款工具进行绑定以构架定制化Linux子系统。此前由Docker公司与芯片合作伙伴ARM、HPE等多家基础设施供应商以及微软与IBM等云厂商协作开发。作为成果,LinuxKit作为开源项目由Linux基金会负责管理,同时遵循其开放治理实践。
  • LinuxKit中运行软件的唯一方式即为使用容器。(这或将意味着系统的攻击面将大幅减小,用户可更轻松地根据安全需求对任意软件进行更换)

判断2:以往Docker公司对Linux强依赖,但是现在Docker决定利用容器元素组成新的Linux发行版。诚如Docker公司市场营销与技术社区高级副总裁David Messina所说表示目标受众为要求以Linux作为产品运行基础

Docker声明3:受Fedora项目启发定义一整套开放、以社区为中心的治理政策(Fedora项目在平衡社区需求与主要企业赞助商要求之间获得了巨大成功)。

事实3:

  • Moby项目的设计原则包括:
    • 内置组件并允许替换:Moby中包含大量组件选项以构建全功能容器系统,但其模块化架构亦可确保大部分组件可通过其它不同实现方案进行替换。
    • 实用性与安全性齐备:Moby项目提供安全默认选项,且不会对实用性产生负面影响。
    • 以容器为核心:Moby项目利用容器构建,且用于运行容器。
  • Moby项目利用containerd作为默认容器运行时。
  • Moby项目中的全部组件皆以容器形式存在,因此新组件的创建难度等同于构建新的OCI兼容型容器。

判断3DIY式社区——利用Moby项目可以构建分布式应用程序中的组件,不论是配置文件还是底层内核。Docker公司希望凭借Moby项目降低内部的重复工作量,而此项目在理论上也允许其他使用者达成同样的效果。 同时,建立Moby项目的另一大潜在动机,或许是借此利用来自Docker或者其它贡献方的组件片段建立起各类可用实例,并为

经过上面的介绍,想必大家对Moby都已经有所了解了。那么LinuxKit呢?

还有一个LinuxKit:DIY式工具集

LinuxKit是用来构建安全、可移植、精益的专门为容器服务的操作系统的工具集。

作为Docker公司长久以来用于创建Docker Desktop与Cloud的内部方案,LinuxKit利用容器作为基础构建块以组合定制化Linux发行版。其拥有极为苗条的身材——最小体积仅为35 MB,且确保全部系统守护程序皆以容器化方式存在。其系统组件与所发 布之软件皆以容器形式进行交付。

Docker公司指出,该项目的目标受众为“要求以Linux作为产品运行基础”的开发者。Docker公司市场营销与技术社区高级副总裁David Messina在电话采访中亦确认了这一定位。

LinuxKit的一大适用用例类型源自物联网。由于物联网平台要求所使用之Linux拥有小巧且安全的特性,因此其它Linux供应商皆据此推出了类似的项目,包括Canonical的Ubuntu Core以及Suse的JeOS。

Docker公司首席开发者布道师Patrick Chanezon援引了多家大型工业企业的实例,其曾尝试构建基于Linux的物联网解决方案,但却因现有技术选项的弊端而遭遇失败。他认为LinuxKit的出现有可能给此类场景带来福音。

不过Chanezon与Messina亦同时指出,LinuxKit除适用于高端工业用例之外,亦能够吸引来自Gentoo、Linux From Scratch或者Slackware的高水平个人用户——即帮助其推出定制化发行版并将其部署在特定硬件设备之上。Messina表示,“LinuxKit非常灵活且可供技术爱好者加以尝试。”

在DockerCon 2017大会上,微软公司Azure架构师John Gossman讲解了一项以Azure为基础平台的LinuxKit用例。Hyper-V隔离通常仅适用于Windows容器,但如今其已经获得了支持Linux容器的能力。用户可以自行选择Linux内核,而LinuxKit将作为其中一种可用选项。

Moby + LinuxKit的组合拳

LinuxKit负责提供用于创建容器类Linux发行版的各类工具,而Moby项目则可帮助用户整合Docker发布至技术社区的各容器元素。

Moby项目之于容器生态系统,正如LinuxKit之于Linux发行版。

这两个项目的核心在于利用可互换的容器组件打造各类新型系统,Docker公司希望提供一种构建定制化容器系统的新途径。

Docker公司Partick Chanezon称:Linux只是Docker的一个组件。所以Docker公司的愿景是想打造横跨Linux,Windows,iOS及至嵌入式等系统平台的大生态体系。

国外和国内有哪些声音?

GitHub、HackerNews、知乎论坛上广大网友们的正面声音并不多,除了一位绅士喵的网友认为更名完全不会造成麻烦,并相信Docker代码依然是完全开源并且会一直存在下去。

有趣的是,实名接受采访的一些业界专家大多数表示了对Docker此番举措的认同。

在外媒中的采访中,Pund-IT公司首席分析师Charles King指出:这一新型协作模式将带来更为方便快捷的部署途径。两个项目的核心目标在于简化容器环境部署与支持工作中的各大关键性流程。

Scality公司CTO Giorgio Regni表示“这亦意味着我们能够利用同样的工具以统一化方式构建自有虚拟机镜像、裸机镜像以及公有云镜像。”

爱奇艺技术总监余珂称他倒是希望Docker能够商业化成功,这样对社区是好事。否则类比Openstack,没有公司盈利的支撑,社区运营也会比较艰难。

京东基础平台部技术总监鲍永成表示:京东在容器技术具有定制开发经验和积累。京东目前运行的Docker版本是经过自己定制,对于Docker更改名称和项目,对京东没有影响。

阿里云资深专家易立认为更名是为了限制Docker名称的使用范围,Docker作为Docker公司的注册商标,只能被用于Docker的产品(比如社区版、企业版、Docker Hub、Docker Store等)。Docker此举对最终用户没有影响,或将影响到开发者和厂商。但是其实Moby项目是将控制权交给社区,并且最终有益于整个容器生态圈的发展。

Pivotal大中国区云计算首席架构师周晖同样表达了观点:

Moby是Docker公司在继推出Docker商业版之后的又一个重要的商业举措,就是把Docker的开源部分比如源码剥离到Moby项目,而Docker则作为纯商业化平台。有些Docker粉丝颇有微词,因为之前对Docker的关注是基于开源,现在Docker不算开源部分,那些给Docker做生日蛋糕的下次要改成给Moby了。

对Docker公司而言,我倒是觉得这次剥离有利于Docker的商业和开源的发展,没有商业成功的开源很难走的很远,如果Docker一直不能盈利导致Docker公司运营艰难,很难想象Docker会继续发展。

对于客户而言,如何做选择会有更多的依据:第一是继续用Moby开源自己定制,第二是选择商业版的Docker,第三是选择Moby创业公司(之前大家习惯称为Docker创业公司)的定制版。

Moby的剥离对曾经的Moby生态圈创业公司而言又是一次打击,因为Moby创业公司不能再混淆概念了,不能再自称是Docker中国区代理之类的,其次,围绕着Moby的创业区域越来越小了,因为Docker在Moby上增加的商业功能越来越多,如果继续和Docker功能重叠,那客户做的选择就简单,与其用Moby创业公司的定制Docker,远不如用原生的商业Docker。

不过……

Docker公司明确指出开发者共享的任何代码皆不属于贡献——意味着开发者仍对相关成果保留全部控制权。Docker在其官方声明《Moby and Docker》中声明,Docker现在是,将来也会是开源的产品,可供容器build,ship,run。Moby项目之后,用户使用上没有任何差异,用户们可以从docker.com网站下载Docker。(其官方声明的词汇搭配是Docker Product和Moby Project。)

不过,Moby项目有不适用人群:

  • 对于希望寻求便捷方式在容器中运行应用程序的应用开发者,建议使用Docker CE。
  • 对于希望寻求可直接使用的商用支持型容器平台的企业IT与开发团队,建议您使用Docker EE。
  • 对于希望了解容器技术并寻求简单学习方法的朋友,推荐docker.com网站。

Docker公司走过了怎样的路?

一步一步,构建生态之心

第一阶段 :(2013-2014)开源容器技术早期阶段

先驱者们开始率先使用容器技术,并通过开源代码库、Docker以及其它相关项目进行协作以推动相关工具发展成熟。

第二阶段:(2015-2016)进入云原生程序的生产环境

在这一阶段,用户社区开始成长并立足数百个生态系统项目与成千上万贡献者支持其大规模部署活动。与此同时,Docker亦将其基本生产模式转变为基于开放组件的形式,旨在增加创新能力并进一步拓展合作范畴。

提取Docker代码库中的组件并进行快速创新,以帮助系统开发商在构建自有容器系统时对其进行单独复用,具体包括:runc、HyperKit、VPNKIt、SwarmKit、InfraKit以及containerd等等。

第三阶段:2017 构建容器生态

Docker认为容器化将成为市场主流,并逐步扩展至各类计算环境当中——包括服务器、数据中心、云计算、桌面、物联网乃至移动端。各个行业与垂直市场、金融、医疗卫生、政府、旅行以及制造业亦参与其中。同样的,包括现代Web应用、传统服务器应用、机器学习、工业控制系统以及机器人等层面亦成为其具体用例形式。作为一大共性,刚刚加入容器生态系统的参与者往往会建立与特定基础设施、行业或者用例相适配的专用系统。

Docker会利用开源体系作为产品的创新实验环境,并与整个生态系统开展密切合作。目前,Docker公司称针对Mac、Windows桌面、Windows Server以及AWS、Azure和Google Cloud Platform等发布了十余种特定Docker版本。

Docker公司称为了能够在短期内通过小型团队以可扩展的方式有效复用既有开发成果,非常需要一种新的方法开发各种专用型版本。Docker团队不仅需要有能力组合各类组件,同时亦应借鉴汽车行业的运营思路,即在不同车型(或者说版本)当中复用同样的组件。

第四阶段:未来在路上

Docker认为将容器生态系统推向下一个发展阶段以实现容器主流化的最佳途径,在于立足生态系统层面实现通力协作。

正是基于此,Docker公司正式公布Moby项目——全新开源项目,提供数十款“乐高”形式的组件,用户可将其组装至基于容器的定制化系统框架当中,并立足于此进行实验并与其他容器技术参与者交流思路。Docker公司解释称不妨将Moby项目视为容器系统版本的“乐高俱乐部”。

Moby项目专为系统构建者(而非主要使用Docker或者其它容器平台的应用程序开发者)设计,旨在帮助其打造自有基于容器技术的系统。Moby项目的参与者可以从Docker提供的组件库中选择自己需要的选项,亦可通过“自带组件(简称BYOC)”机制利用更多其它组件创建与众不同的定制化容器系统。

Docker将Moby项目作为开放性研发实验室,供各位生态系统参与者立足未来容器技术发展构思进行实验、新组件开发以及协作。我们的全部开源协作成果还将逐步被引入Moby项目之内。Docker公司称其诚挚邀请社区人士加入以推动软件容器主流化运动,并共同将生态系统与用户群体规模扩展至更高层次。

更名是因为Docker已经成为了注册商标;将项目模块化是为了更易用。

Docker一定知道社区的重要性,其目标也是建立更大的容器生态;同时,它也希望更多的行业应用场景,不然不会布局为物联网做准备。

面对投资人压力,Docker公司在戴着脚铐跳舞;也许后来,它会成为下一个RedHat。

参考文章

https://thenewstack.io/docker-seeds-two-new-projects-building-containerized-infrastructure/

http://www.infoworld.com/article/3190611/open-source-tools/docker-debuts-containerized-construction-kit-for-building-linux-distros.html

http://www.linuxinsider.com/story/84474.html

https://blog.docker.com/2017/04/introducing-the-moby-project/

https://yq.aliyun.com/articles/74440

https://yq.aliyun.com/articles/74437

附文:Moby项目的官方声明

Moby项目——面向容器生态系统以建立组合式容器系统的协作项目

Moby是Docker公司开发的全新开源项目,旨在进一步推动软件容器化运动的前进步伐。其以“乐高式”思路提供数十款组件选项,配合一款能够将各组件组合为定制化容器系统的框架,同时亦可作为容器技术参与者们实验灵感并交流思路的协作平台。

Moby项目概述

Moby项目的核心是一套用于组装定制化容器系统的框架,其具体特性包括:

  • 一套涵盖各类容器系统组成元素的容器化组件库,具体包括操作系统、容器运行时、编排、基础设施管理、网络、存储、安全、构建以及镜像发布等等。
  • 将各组件组装为面向多种平台及架构之可运行元素的工具,适用平台包括裸机(x86与ARM); Linux、Mac与Windows可执行文件; 面向各主流云及虚拟化供应商产品的虚拟机镜像。
  • 一组参考组合方案,可用于直接使用、修改或者启发您创建自己的容器系统。

Moby项目中的全部组件皆以容器形式存在,因此新组件的创建难度等同于构建新的OCI兼容型容器。

设计原则

Moby为基于明确原则指导的开放项目,但同时亦拥有模块化、高度灵活性且无硬性使用方式规定等优势,因此容器技术社区可充分参与并为其设定下一步发展方向。Moby项目的设计原则包括:

  • 内置组件并允许替换:Moby中包含大量组件选项以构建全功能容器系统,但其模块化架构亦可确保大部分组件可通过其它不同实现方案进行替换。
  • 实用性与安全性齐备:Moby项目提供安全默认选项,且不会对实用性产生负面影响。
  • 以容器为核心:Moby项目利用容器构建,且用于运行容器。

利用Moby项目,您将能够描述分布式应用程序中的全部组件——包括高级配置文件到底层内核——并利用其轻松构建并部署应用成果。

Moby项目利用containerd作为默认容器运行时。

受众

Moby项目适用于任何希望利用现有或定制化组件组装容器系统的用户,具体包括:

  • 希望对其Docker构建方案进行定制或者调整的技术爱好者
  • 负责构建容器系统的系统工程师或者集成商
  • 希望将现有容器系统与其实际环境进行适配的基础设施供应商
  • 希望体验最新容器技术的容器技术爱好者
  • 希望立足多种不同系统测试其项目的开源开发人员
  • 任何希望了解Docker内部架构及构建方式的朋友

Moby项目不推荐以下用户使用:

  • 对于希望寻求便捷方式在容器中运行应用程序的应用开发者,我们建议您使用Docker      CE。
  • 对于希望寻求可直接使用的商用支持型容器平台的企业IT与开发团队,我们建议您使用Docker EE。
  • 对于希望了解容器技术并寻求简单学习方法的朋友,我们向您推荐docker.com网站。

过渡至Moby项目

Docker公司正在将全部开源协作成果逐步引入Moby项目。在这一过渡期间,全部开源贡献活动皆可照常进行。

以下为具体变更说明:

  • 将引擎拆分为更多开放组件
  • 移除docker UI及SDK等,并将其转入Docker内部进行保留
  • 强调此项目不仅限于此引擎,亦适用于Docker平台之上各独立组件的组合
  • 对我们用于组装Docker产品的各新型工具与组件进行开源并供技术社区使用
  • 受Fedora项目启发定义一整套开放、以社区为中心的治理政策(Fedora项目在平衡社区需求与主要企业赞助商要求之间获得了巨大成功)

法律问题

若您有任何相关疑问,请与我们的法律顾问联系。欲获取更多背景信息,请参阅本资源库中的NOTICE文档。Moby项目的使用与转让可能受到美国及其它政府某些法律条款之限制。您有责任确保您的Moby项目使用及/或转让行为遵循适用法律之具体要求。欲了解更多信息,请参阅:https://www.bis.doc.gov。

许可Moby项目基于Apache License v2.0许可。欲了解完整许可内容,请参阅LICENSE。原文链接:https://github.com/moby/moby

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT