如果你是一名运维工程师,你就会知道Docker公司的估值已超过10亿美元,而且Docker是最受关注的技术品牌之一。Docker容器被称为容器运行时的事实标准,但是Google公司的Kubernetes正在赢得编排框架市场的胜利。在使用容器技术时,我们经常会遇到这样一个问题,“使用Kubernetes会伤害Docker吗?”
许多人认为容器技术的价值在编排层,这是Kubernetes对Docker容器的直接威胁。然而我不认同这个观点,因为Docker不是一家容器运行时公司,而是一家容器平台公司。要理解这个概念,我们必须了解Docker公司的历史。
PaaS vs CaaS
Docker公司曾是一家名为dotCloud的公共云PaaS(平台即服务)公司。所有的PaaS解决方案都可以利用容器封装来执行复杂的任务,例如实时迁移,以便可以快速部署软件,而不需要用户离线系统或停机。2013年,dotCloud公司开源了其基础容器技术,称为Docker项目。与此同时,一个大型技术社区产生了,dotCloud从一家纯粹的PaaS公司转型成为一家名为Docker的容器平台公司。
Docker+Kubernetes(k8s)微服务容器化实践
在接下来的两年中,Docker公司筹集了1.9亿美元,并阐述了容器即服务(CaaS)的概念。首席技术官Solomon Hykes指出,PaaS的最大挑战之一是开发人员往往过于规范。CaaS的理念是用户可以将相关的组件容器化,并在Docker产品和服务的帮助下,搭建一个由容器化组件构成的非规范性平台。这样,开发人员就从基础的IT管道中抽象出来,不再被PaaS供应商提供的技术所捆绑。转向CaaS使得Docker成为容器平台公司,而容器只是一种工具。
编排框架
一旦拥抱了容器,用户就需要一个编排框架来调度和管理容器。最常见的编排框架有Kubernetes、Mesos、Docker Swarm。Kubernetes是目前市场上最成熟的、最具扩展性的解决方案,占有最大的市场份额。上述三个编排框架都开放源代码,用户只需为技术支持服务付费。
Kubernetes与Docker容器之间,并不是苹果与苹果的比较,你不能将业务流程工具与平台对比。Kubernetes是Google公司多年来用于大型集群管理的基础技术,它于2015年7月发布。之后的DockerCon 2016上,Docker公司宣布了具有业务流程功能的Docker Swarm。Docker Swarm的一个优点是与Docker平台中的许多安全功能集成,如**管理。在容器规模较小的场景下,许多用户更喜欢使用Docker Swarm,因为它平滑地内置于Docker平台中。
容器技术的价值在平台
到目前为止,编排框架竞赛的获胜者是Kubernetes。这使得许多人认为Kubernetes对Docker容器造成了很大的威胁。在DockerCon 2017上,Docker公司发布了Moby项目,它是一个基于容器平台(CaaS)的组装框架。Moby项目使得用户可以用喜欢的组件来创建定制化的平台。从下图可知,编排框架只是容器平台(CaaS)的一层。
Docker容器不关心用户使用哪种编排框架,它的工作是让用户轻松地选择最喜欢的编排框架,无论Kubernetes、Mesos、Docker Swarm还是其他。这个选择在价值上无关紧要,真正的价值在于平台,那才是钱。因此,将Kubernetes与Docker容器进行比较是没有意义的,Docker的真正的竞争对手是VMWare、CloudFoundry等平台。
在我看来
在Twitter上,我们看到Google公司的Kelsey Hightower与Docker公司的Solomon Hykes之间喋喋不休,但是我相信Kelsey对于Docker容器缺乏开放性的建设性批评,有助于推动其将Kubernetes作为容器平台编排层的可行性选择之一。如果这样,Google公司就不再是容器生态的敌人,更多的是合作伙伴。
Docker公司的资金收入来源于技术支持服务,生产中运行的Docker容器越多,技术支持服务的收入就越多。对Docker公司来说,重要的是Docker容器使用率的提升。显然,Kubernetes是最受欢迎的编排框架,被用于驱动大规模的容器应用,而Kubernetes可以使更多的Docker容器投入生产。
在我看来,Kubernetes不是Docker容器的杀手,而是推动者。更进一步地说,编排框架是容器平台的商品,它会驱动容器运行时的使用。编排框架是容器平台的关键组成部分,它与容器运行时是朋友,而不是敌人。
转载于:https://blog.51cto.com/aino007/2163568
来源:http://blog.51cto.com/aino007/2163568
adb常用命令: 查看手机是否连接:adb devices 连接设备:adb connect 设备ip:端口号 若有连接多个设备需指明设备ip及端口号 安装APP:adb install [-r] 包名 -r表示覆盖安装,首次安装可省略 卸载APP:adb uninstall 包名 列出设备中所有应用包名:adb shell pm list packages ...
以谷歌浏览器为例,注意有些浏览器并不支持该功能。 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置--》隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图片,其中也可以只禁用某些网站图片,或者只开启自己想显示图片的网站...
IDEA中使用springMVC 出现 404请求的资源不可用的其他一个可能原因 如果你确认你在视图解析器中的路径设置没有问题,各种文件名都没问题,却依然出现资源不可用错误 你可以检查这个页面中是否为web部署了工件,没有的话部署一下就好了。...
1.安装完系统后在该目录下新建wpa_supplicant.conf文件填入以下信息 ssid是wifi名字 psk是wifi密码 priority:连接优先级,数字越大优先级越高 2.插入sd卡开机自动连接 3.利用ssh登陆树莓派 4. 输入命令 sudo apt-get install xrdp 安装 5.利用windows远程桌面登陆 6.输入登陆用户名密码,完成...
Office 365中,将Word与SharePoint/One drive for business相结合,实现协作编辑,是一个特别好的功能。虽然可能大部分时间一个文档同时只有一人编辑,但总会出现这样的情况 - 比如之前公司的一个项目,几个人协作写Statement of Work, 售前工程师在写文档的主题,售后工程师在Verify售前工程师所写的细节并且进行修正,项目经理在向文档中添加项目管...
交叉表主要是通过设置数据的不同展开方向实现的。 如图所示: A1为交叉表的表头,B1为表中一列数据,定义它的数据展开方向为向右,A2为表中另外一列数据,定义它的展开方向向下,于是A2和B1分别形成了交叉表的标题。 B2则为具体的数据统计内容。 预览效果为: B2的数据展开方式的不同会造成报表展示结果不同。 此时多列数据用逗号隔开,放在同一行。 此时多列数据放在不同行。 此时多列数据放在不同的列上。...
本文是从"金老师的计算机自学网站"上的学习笔记,强推!内容特别好。有需要可以去学学哦~ 1、闭区间 注:只能是整型,默认升序! 2、定义区间 3、区间的遍历 4、降序区间与半开半闭区间 本文是从"金老师的计算机自学网站"上的学习笔记,强推!内容特别好。有需要可以去...
本文首发于知乎日报,转载请注明出处 Henry-航,Don't say if, build something. 算是纪录片的狂热爱好者吧,以前就一直断断续续收藏了不少蓝光纪录片,看的也断断续续。最近一年多来一狠心,一直保持着每天看 20 多分钟纪录片、每两天看一集纪录片的节奏。现在回头看看还真的看了不少的纪录片。 好看的纪录片非常之多,但看了不少题材的纪录片之后发现相同题材下的纪录片同质化现象也...
自动辅助驾驶Openpilot安装 乐视手机去电池改造 Openpilot 购买必要硬件 乐视手机电池改造 Openpilot Openpilot 是一款开源的无人驾驶平台,而这款开源项目最终目的是希望透过开源的力量,让大家来共同维护开发,让市面上所有车款都支援此系统。汽车要求配备 但首要条件需要具备两种系统 : (1)ACC主动式定速巡航系统 (2)辅助转向或相似系统。 为什麽局限于这两款系统的...
I'm currently trying out the google cloud messaging service with its sample application "Guestbook." https://developers.google.com/cloud/samples/mbs/ I'm attempting to send notifications tha...
Now I came across an article that distinguishes between an Asynchronous function and Synchronous functions. From my understanding of the different examples and explanations, synchronous functions are ...
Good day all I'm busy creating a small costing calculator for the signage department. I'm not getting the calculator to output the amount. Brief Description: You enter the height and width and then wh...
I have 3 models created with Flask-SQLalchemy: User, Role, UserRole role.py: user.py: user_role.py: If I try (in the console) to get all users via User.query.all() I get AttributeError: 'NoneType' obj...
I have many particles that follow an stochastic process in parallel. For each particle, there is a PRNG associated to it. The simulation must go through many repetitions to get average results. For ea...