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

阅读数:7653 2017 年 5 月 2 日 19:00

开源圈的一股怒火

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

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

这番声明居然的正面反馈(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和LinuxKit,Docker称沟通不善招致误解

Moby 的定位

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

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

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

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

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

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

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

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

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

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

事实 1:

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

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

  • 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 兼容型容器。

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

判断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公司希望提供一种构建定制化容器系统的新途径。

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

全面解读Moby和LinuxKit,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 项目是将控制权交给社区,并且最终有益于整个容器生态圈的发展。

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

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 以及其它相关项目进行协作以推动相关工具发展成熟。

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

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

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

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

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

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

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

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

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

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

第四阶段:未来在路上

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

全面解读Moby和LinuxKit,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

评论

发布