在上周的DockerCon上,Docker正式发布了Moby项目——将Docker组件转换成一系列的程序集。DockerCon上有一个简单的演示,使用moby工具将各种组件组装成自定义的Linux操作系统映像。这看起来很酷,但也让很多人感到困惑。与此同时,关于莫比的热议和争论也从未停止过。本文作者DarrenShepherd是RancherLabs的首席架构师和联合创始人,也是Docker的维护者。我们想提供一些关于Moby项目的背景和解释,以及它将如何影响Rancher、RancherOS和我们的用户。Moby项目的一些背景其实早在几个月前,Docker项目的维护者就已经开始了关于Moby项目的讨论。这一切都归功于Docker作为产品和项目的双重特性。这种二元性在一开始就为Docker(包括Docker项目和Docker公司)带来了很多好处。但最终,Docker公司必须走到这个决策的交汇点,来决定他们的产品应该是什么样子,以及未来要往哪个方向发展。作为Docker维护者,我们认为产品和项目确实应该分开。Docker的最终目标是在过去工作的基础上进一步将Docker组件化。Docker的组件化并不是一个新话题,这项工作已经进行了很长时间,从runc和containerd开始,它一直是Docker项目很长一段时间的目标。感谢一千名贡献者和维护者,到目前为止,Docker仍然是一组组织良好的库和包。Moby项目将Docker项目转变为一个完全组件化的架构,并为绝大多数Docker代码提供了一个新家,但不是产品本身。Moby使我们作为社区成员能够为容器技术的创新和发展做出比以往更多的贡献。今天,我们可以从技术角度解决一些非常有效的用例,尽管这与以前的Docker产品有冲突。例如,RancherOS就是这样一个用例。Moby将如何影响Rancher、RancherOS和我们的用户?那么,Moby会对Rancher、RancherOS以及我们的用户产生什么影响呢?答案是大多数用户不会看到任何变化:Docker就是Docker。它将继续是您所了解和喜爱的Docker(并且可能具有更好的内部结构)。您将在RancherOS中看到哪些变化?RancherOS是一个高度专业化的容器应用程序,一个所有组件都是容器的操作系统。为了使RancherOS成为可能,我们需要Docker中的一些真正的低级旋钮。尽管这可能不利于Docker用户体验,但Docker仍然为我们提供了许多这样的旋钮。例如,--uts=host:我猜99%的Docker用户不知道这个标志是什么,但RancherOS需要它,这样DHCP才能动态传播主机名更改。从长远来看,Moby项目将为RancherOS带来积极的帮助。我们可以保留相同的DockerUI,但通过Moby,我们可以访问我们需要的所有低级Linux旋钮。最终,用户将拥有一个更轻、更快、更安全的RancherOS。Moby项目对Rancher也很好:Rancher旨在管理Docker容器,未来我们还可以管理从Moby项目组装的自定义Linux组件。写在最后……莫比引起的热议一直没有停过,业内质疑和不满的声音也不少。而我们只是想专注于更积极的一面,与Docker用户、Rancher用户以及容器生态中的每一个人一起,继续为开源和容器的发展做出贡献。
