上周的DockerCon上,Docker官方公开了Moby项目——将Docker组件化成一系列程序集。DockerCon上有一个简单的demo,用moby工具将各种组件组装到定制的Linux操作系统镜像中。这看上去很酷,但同时也让很多人困惑。同时,关于Moby的热议和争论也从未停止过。
本文的作者是Rancher Labs的首席架构师兼联合创始人Darren Shepherd,同时也是Docker的maintainer。我们想提供一些关于Moby项目的背景和解释,以及它将如何影响Rancher、RancherOS和我们的用户。
Moby项目的一些背景
其实早在几个月前,关于Moby项目的讨论就已经在Docker Project maintainer之间展开了,这一切都是由于Docker既是一个产品、又是一个项目的双重性质。这个双重性在一开始是给Docker(既是指Docker项目,也是指Docker公司)带来了不少好处的。但是最终,Docker公司必然要走到这个决定的路口,决定他们的产品到底应该是什么样,将来究竟是什么走向。作为Docker maintainer的我们,认为产品和项目确实应该分开。
Docker公司的最终目标,是在过往工作的基础上,进一步将Docker组件化。 Docker的组件化并不是什么新鲜议题了,这项工作已经进行了很长时间,从runc和containerd开始,长期以来它一直是Docker项目的目标。多亏一千个贡献者和maintainer,到目前为止,Docker仍是一套组织良好的library和package。
Moby项目将Docker项目转变成了完全组件化的架构,并为绝大多数的Docker代码、而非产品本身提供了新的归属。 Moby让我们这些社区成员得以以前所未有的方式为容器技术的创新和发展作出更多贡献。如今,我们可以从技术角度来处理一些非常有效的用例,不过这与以前的Docker产品有冲突。而举例来说,RancherOS就是这么一个用例。
Moby会如何影响Rancher、RancherOS和我们的用户?
那么,Moby对Rancher、RancherOS和我们的用户会产生什么影响呢?答案是,大多数用户不会看到任何改变:Docker还是Docker。它将继续是您所了解和喜爱的Docker(并且有可能会有更好的内部架构)。
在RancherOS里你会看到什么改变?RancherOS是一个高度专业的容器应用,它是一个所有组件都是容器的操作系统。要使RancherOS成为可能,我们在Docker中需要一些真正的low-level的knob。而即使这有可能不利于Docker UX,Docker仍为我们提供了许多这样的knob。比如说,--uts = host:我猜99%的Docker用户都不知道这个标记是什么,但是RancherOS需要它,有了它,DHCP才可以动态地传播主机名的更改。
从长远来看,Moby项目是将给RancherOS带来积极帮助的。我们可以继续保持相同的Docker用户界面,但是通过Moby,我们可以访问所有我们需要的low-level的Linux knob。最后,用户将拥有的会是一个更轻量、更快、更安全的RancherOS。 Moby项目对于Rancher而言也是非常好的:Rancher旨在管理Docker容器,在将来,我们还可以管理从Moby Project组装的定制Linux组件。
写在最后…
Moby引发的热议仍未停息,业界也有很多质疑和不满的声音。而我们只想关注更积极的一面,和Docker用户、Rancher用户及容器生态系统中的所有人一起,继续为开源、为容器的发展作出贡献。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。