容器上使用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/kimgoo/article/details/54630257 增加字段:alter table 表名 ADD 字段 类型 约束 [默认值 注释] ...
- 【leetcode算法-简单】7.整数反转
[题目描述] 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321 示例 3: 输入: 12 ...
- STL源码剖析——iterators与trait编程#4 iterator源码
在前两节介绍了迭代器的五个相应类型,并讲述如何利用traits机制提取迭代器的类型,但始终是把iteartor_traits类分割开来讨论,这影响我们的理解,本节将给出iteator的部分源码,里面涵 ...
- PAT(A) 1144 The Missing Number(C)统计
题目链接:1144 The Missing Number (20 point(s)) Description Given N integers, you are supposed to find th ...
- 机器学习-EM算法笔记
EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断,混合高斯模型 ...
- GitHub的Fork是什么意思
GitHub的Fork 是什么意思[转] GitHub Help Simple guide to forks in GitHub and Git GitHub的Fork 是什么意思-N神3-博客园 G ...
- javascript之typeof
定义和用法
- Linux磁盘管理系列 — 磁盘配额管理
一.磁盘管理的概念 Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限.因此,系统管 ...
- CCF 2017-03-2 学生排队
CCF 2017-03-2 学生排队 题目 问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学 ...
- 在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串、补足行数)
原文:在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串.补足行数) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...