容器上使用Docker还是Rocket?为什么不一起用呢?
在2014年接近尾声时,CoreOS在Docker发布了Rocket,声称Docker的流程模型有着“根本性的缺陷”。虽然CoreOS的创始人Alex Polvi尽量缓和语气,但是他坚持自己的基本观点,Docker不再是构建系统的最佳组件。
容器技术最近异军突起,所以很容易看出为什么Polvi这么积极地跑马圈地。因为容器之争才刚刚开始,不过,更严重的问题是供应商之间这样来回的争吵是否会吓跑那些想要采用容器技术的企业,至少让他们等到争论尘埃落定时。
平台 vs. 组件
CoreOS的Plovi和Docker的创始人Solomon Hykes在一点上有着共识:Rocket和Docker实际上不是竞争关系。Hykes说,Rocket“实际上是libcontainer的竞争对手”,而不是整体Docker平台的竞争对手。Libcontainer,是“为容器制定配置选项”的库,它对于Docker至关重要,它也是社区的努力结果,能帮助定义容器的未来。
正如InforWorld的Serdar Yegulap所写,Libcontainer非常重要。
但是Plovi显然觉得Docker忽略了它自己的核心愿望而想去做更多 – 成为平台。
Polvi 说:
"Docker一开始是用来构建平台的组件。一个构建模块。一个可以集成到现有系统使其可以使用容器的东西。这是Docker的最初价值,帮助构建东西的简单工具,这也是我觉得Docker能在今天这么成功的原因。"
这在有些方面这有点像“我们想回到过去的黄金年代”,但是Plovi坚持这不是反Docker,而是希望Docker继续作为一个开放组件来帮助构建其他系统:
Docker[现在]本身就是一个平台,不是构建模块。这是坏事吗?不,它只不过不再是构建系统的最佳组件。包括我们的系统,在这上面我们想要使用容器来构建OS。
我们认为还需要这样的组件存在,让其他系统能与之集成。我们认为Docker的初衷仍然是正确的,因此我们想确保它继续存在。这就是我们开发Rocket的原因。
然而,问题是在某些方面,当想要构建业务时,Docker可能有意或无意地使得在其上构建其他业务变得困难。Polvi继续说:
"Docker平台和Rocket是完全不同的东西。Docker平台是一个产品。Rocket是一个组件。公司可能会选择Docker平台替代 [Pivotal的]Cloud Foundry。而像Cloud Foundry这样的公司却会使用类似Rocket这样的组件来构建Cloud Foundry。"
不管你的公司是需要Docker还是Rocket(或者其他容器技术),最终都是要构建出想要构建的东西。但是公司可以用Docker,平台,加上libcontainer作为Polvi的可组合组件吗?
绝对有可能。这正是让人困惑的地方。
Rocket有存在的必要吗?
开源世界经常会开发出一些没有实际价值的东西。有时候有些东西之后会变得有价值,但更多的时候却没有。
Docker替代了Linux 内核的LXC,这种容器技术已经存在了好多年。但是Pivotal的Andrew Clay Shafer指出,“Docker解决了[LXC的]可用性问题,使得这种技术可以被使用。”
同样,CoreOS极大得改进了Docker。Pivotal的Cloud Foundry的执行官James Watters说,Rocket“是给市场带来新思路的非常重要的一步,它始终以多平台容器思想为中心。”它也承诺会改进Docker的安全性。
不是所有人都同意。
虽然Hykes承认Rocket提供了“一些好的想法,我们会引入”,但是他认为Rocket没有像CoreOS那样本质的改进,包括改进的安全性和可组合性。
可能对,也可能不对。Rocket的受欢迎程度说明它的确满足了行业的深层次需求。即使Docker扩展其功能来提高易用性,大多数人可能更想要一个更为独立的容器库,这样能更容易得将它集成到现有的项目或者环境当中。Libcontainer可能是解决方法,但是开发人员看上去更喜欢Rocker的回到初心(back-to-basics)的方式。
消除困惑
这再次给企业们提出了问题:他们需要Docker还是Rocket?答案很可能是都需要。
有人担心这两种相互竞争的技术带给客户的困惑可能比帮助更多。Polvi说,即便如此,业界,包括竞争对手们,都认同的是,容器的价值。
在这个全新的领域,每个人都希望容器能帮助客户成功。我们觉得必须要做些事情(包括安全,可组件性,和公开标准)来确保容器能应用于企业里。我们认为Rocket在此有所帮助,并且鼓励Docker也转到这个正确的方向上。
这就是竞争所起的作用,更准确地说,这就是开源所起的作用。Polvi立刻回应,“总得来说,对于开发组件而不是产品,开源非常有效。”寻求开源容器技术的企业,最好记住这一点,开源能帮助更好地开发构建组件,而不是完成整个企业产品的开发。
这还意味着,Polvi继续说,CoreOS最主要的竞争对手不是Docker,而是“将所有东西自己攒在一起的内部组织。”
“虽然大企业会继续有自己专门的小组来构建其系统的基础架构,CoreOS(和Docker)相信他们“可以给那些不想靠自己搭建所有东西,但是想达到大企业同等级别基础架构的公司提供解决方案。”
从另外一方面,Rocket是一个开源组件,可以帮助企业构建系统,而Docker,根据Polvi的说法,想要自己成为系统/平台。这是两种完全不一样的方式,两者都需要。哪种更适合你的项目取决于你到底想要构建什么。
好啦,今天的分享到这里就结束了,如果需要更多的技术性文章,可以直接访问马哥教育官网欧!
容器上使用Docker还是Rocket?为什么不一起用呢?的更多相关文章
- 配置docker容器上ssh无密登录
配置docker容器上ssh无密登录 1.修改所有容器中root账户密码 ssh到远程主机时,首次需要密码访问,因此需要修改root账号密码. 密码必须要8位以上字母数字混合. $>passwd ...
- windows7上使用docker容器
1.安装 下载DockerToolbox,并安装. 下载地址:https://dn-dao-github-irror.daocloud.io/docker/toolbox/releases/downl ...
- Win10上的Docker应用:Kubernetes(容器集群)
阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) Docker应用:Kubernetes(容器集群) 前言: 终于出第三篇了,上个月就已 ...
- 在docker容器上如何实现代码的版本管理
之前在一台centos7的虚拟机上部署了docker并运行了三个容器给开发写代码用,写代码肯定会涉及到版本控制管理. 开始建议是开发在容器中写代码,然后通过docker commit的方式将其保存为i ...
- Flask 教程 第十九章:Docker容器上的部署
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...
- Docker 实战(2)- 配置 Jenkins 容器上的持续集成环境
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 搭建 Jenkins 容器 就是 ...
- 容器技术与docker
名词介绍 IaaS:基础设施即服务,要搭建上层数据应用,先得通过互联网获得基础性设施服务 PaaS:平台即服务,搭建平台,集成应用产品,整合起来提供服务 SaaS:软件即服务,通过网络提供程序应用类服 ...
- 在 Azure 上使用 Docker运行 Mono
Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方 ...
- 在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务
本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. ...
随机推荐
- 【转】mysql 存储过程的示例
原文地址:https://blog.csdn.net/lishaojun0115/article/details/50183661 begin #定义变量 declare local_sender v ...
- 微信公众号使用vue,安卓端点击按钮404,ios访问正常问题
情景:微信公众号使用vue开发的单页面,在安卓端点击按钮访问显示404,ios访问正常问题,能正常显示. 解决:将微信公众号菜单按钮设置的路径中把WWW去掉后,安卓.ios都能正常访问. 问题路径ww ...
- Quartz.Net—IJob特性
IJob默认情况下是无状态的,和其他系统没有关系 特别是job里面的jobdata每次都是新的.可以无限扩展. PersistJobDataAfterExecution JobData持久化 Job ...
- Linux shell 中 & && [] [[]] () [] 含义
| 语法:command 1 | command 2 功能:把第一个命令 command 1 执行的结果作为 command 2 的输入传给 command 2 & & 放在启动参数后 ...
- STM32之串口硬件连接图
笔记本USB转串口实物连接图: 电路连接图:
- 长乐培训Day2
T1 足球联赛 题目 [题目描述] 巴蜀中学新一季的足球联赛开幕了.足球联赛有n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得3分,输一场不得分,平局两只队伍各得一分. 英勇无 ...
- 批量删除c文件和h文件中的注释
不知道大家有没有批量删除c文件和h文件中注释的需要,说起来搞笑,偶然翻出来早先写的一份,首先楼猪不是闲的蛋疼写这东西,工作需要,哪里要砖就要搬.冷门的东西大家需要的时候也不一定好找,分享给大家,省的自 ...
- python 并发的开端
目录 网络并发 进程的基础 2.操作系统 操作系统的发展史 多道技术 第二代 1955~1965 磁带存储--批处理系统 第三代集成电路,多道程序系统(1955~1965) 进程的理论(重点) 2.操 ...
- python 之 数据库(修改表、复制表、删除表、单表查询)
10.8 修改表.复制表.删除表 10.81 修改表 alter table . 修改表名 alter table 表名 rename 新表名; . 增加字段 alter table 表名 add 字 ...
- PAT(B) 1053 住房空置率(Java)统计
题目链接:1053 住房空置率 (20 point(s)) 题目描述 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的 ...