Rocket 是一个运行 App 容器的命令行工具,由 CoreOS 在 2014 年底发布,其设计目标包括可组合性、安全性和速度。Alex Polvi 是 CoreOS 创始人,他在接受 Adobe 移动部门副总裁 Matt Asay 采访时介绍了推出 Rocket 的原因。
按照 Polvi 的说法,Docker 的进程模型存在根本上的缺陷,它不再是构建系统的理想组件。因此,他们推出了 Rocket,不是为了反 Docker,而是为了实现 Docker 创建的初衷,为构建其它系统提供一种开源组件。他说:
现在,Docker 本身已经成为一个平台,而不是一个构件。这不好吗?不,挺好,只是它不再是构建系统的理想组件。那也包含我们的系统,我们想用容器构建一个操作系统。
我们认为,这种组件仍然有存在的必要……Docker 的初衷还是不错的,所以我们希望确保它的存在。这就是为什么我们构建了 Rocket。
Rocket 完全不同于 Docker。Docker 现在已经构建了一系列的工具,包括云服务器启动工具、镜像相关的操作工具等。这些工具都编译进一个统一的二进制文件。因此,它已然成为一种平台产品,而 Rocket 是一种可重用的组件。
Solomon Hykes 是 Docker 的创始人,他也同意上述观点,认为 Rocket 和 Docker 不会形成竞争。他告诉Asay ,Rocket“实际上是 libcontainer 的竞争者”。不过,虽然承认 Rocket 提供了“一些好的理念”,但他坚持认为, Rocket 并没有提供 CoreOS 公司所寻求的基本改进。
Asay 认为,Docker 整体功能的扩展确实简化了应用,但许多人仍然需要一个更加独立的容器库,可以很容易地引入现有的项目或环境。Libcontainer 可能是一种答案,但开发人员似乎更认可 Rocket 这种回归本原的做法。但同时,他也指出,在 Docker 和 Rocket 之间不存在排它性,企业可能两者都需要。
总之,Rocket 是一个开源组件,可以帮助企业构建系统,而 Docker 是一个平台。这是两种截然不同的做法,哪一种更合适很大程度上取决于构建目标。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论