- 论坛徽章:
- 49
|
6月10日,红帽发布了RHEL 7,其中最抢眼的更新就是支持了基于Docker的容器技术,紧接着,谷歌也宣布在GAE上支持Docker,这些消息,在原本就炙手可热的Docker上又泼上了一瓢热油。
俗话说,看问题要具有两面性。前几天,笔者和几个企业朋友进行讨论的时候,用了较多的时间聊了Docker,大家对Docker技术给整个虚拟化以及云计算市场带来的变革都报以赞扬,但本着“用批判的眼光看世界”的想法,我们便开始从自身工作的角度寻找Docker的不足,特别是Docker面向传统企业IT环境还不够完善的地方。
三个问题
1.Docker的应用场景是什么?
这是当时讨论到的第一个问题,对企业用户而言:东西虽好,我用不上,关我毛事。
谈到这个问题,就需要看一下Docker的出身,Docker由一家叫做dotCloud的公司2013年3月发布的,而dotCloud是一个PAAS提供商,在docker的博客中,Docker将自己定位为“分发应用的开放平台”,其网站上也明确地提到了Docker的典型应用场景:
- 对应用进行自动打包和部署(Automating the packaging and deployment of applications)
- 创建轻量、私有的PAAS环境(Creation of lightweight, private PAAS environments)
- 自动化测试和持续整合与部署(Automated testing and continuous integration/deployment )
- 部署和扩展Web应用、数据库和后端服务(Deploying and scaling web apps, databases and backend services)
由此可见,Docker的目的是让用户用简单的“集装箱”方式,快速的部署大量的、标准化的应用运行环境,所以,只要是这类的需求,Docker都比较适合。
2.Docker能否替代虚拟机?
有些激进的言论声称Docker将是现有虚拟机技术的终结者,个人觉得此言论有些浮夸了。Docker是面向应用的,其终极目标是构建PAAS平台,而现有虚拟机主要目的是提供一个灵活的计算资源池,是面向架构的,其终极目标是构建一个IAAS平台,或者是SDDC。
所以,两者并没有直接的冲突,各干各的事儿,只是以前由于容器技术还不成熟,虚拟机技术暂时抢了一部分面向应用的使用需求,随着以后的发展,这些应用场景会逐渐的转向Docker的阵营。
并且,两者相辅相成。Docker的老东家dotCloud的PAAS服务便基于Amazon的AWS服务,因此,虚拟机是Docker的土壤,而Docker则向用户展现了业务。
3.Docker能否满足企业的运维需求?
企业对运维的需求简单来说主要考量稳定性、可管理性,以及业务高可用和可恢复能力三个方面。
从稳定性上看,Docker在6月10日发布了1.0版本,把该版本称为一个“里程碑”,并声称“1.0的发布表明在质量、功能完整、后台兼容和 API 稳定性方面已经提升了一个级别,达到企业 IT 标准”。但在此之前,dotCloud一直警告用户“不要在生产环境中运行 Docker ”,在RHEL 7中,Docker的版本为0.11.1,这是1.0发布前的RC版本,虽然红帽会将之后的Docker更新和补丁修复更新到0.11版本中,但是,企业客户在使用这样一个较新的软件版本时,仍需承担不小的稳定性风险的。而在很多企业客户的软件版本选择规范上,都有“需采用已经发布超过半年的稳定版本”的要求。
可管理性方面,企业的IT运维人员需要所使用的软件具有很好的可视化管理能力,并且具有可行的监控手段。
Docker目前的集中化管理主要有DockerUI 、Dockland、Shipyard 等,其中 Shipyard成熟度和活跃度最好,从Shipyard上抓取一张界面的演示图片如下:
Docker的主要作用是应用的发布和运行,但是,看起来Shipyard在Application的管理上还很粗糙,并且,整个管理思路并不是以应用为中心的,这可能会给企业在集中管理Docker的时候,带来了一定的“麻烦”。
而监控的主要目的是快速了解系统、运行的建康状况,对风险状态进行告警,这方面,Docker较为缺乏,还需要企业针对相关环境进行定制化的监控实现。
最后,在业务高可用和可恢复性方面,我们知道,在企业中只有核心业务、非核心业务,没有“非关键业务”,任何一个业务都是需要高度可用的,因此,企业业务平台都要考虑三个事情:本地高可用、数据备份、远程灾难恢复。
谁能告诉我这三件事情Docker应该怎么做?
当然,在使用Docker的时候,也许需要从另一个角度考虑问题,在Docker的应用场景中,提倡“无状态”应用,也就是说,业务数据仅在数据层进行存储,而业务层不关注任何数据。业务层的高可用就可以通过快速的重新部署来实现,数据层仍然采用传统模式,或者借助于传统的方式实现高可用和可恢复性。但这需要时间进行方案摸索和验证,其可行性和可靠性需要时间来去证明。
结论
综上所述,Docker到大规模的企业环境应用还有不少的路要走,但是,它所带来的便利性仍然不可小视,这将是革命性的改变,“不足”换种说法就是“机会”,这需要大量了解企业业务的合作伙伴围绕Docker推出相应的解决方案,而Docker的开放性给这种努力带来了极大的便利性。
而对于企业来说,Docker对开发、测试团队带来的便利性非常巨大,而开发、测试环境对之上所讨论到的缺点并不关注,所以,在开发、测试团队大胆的推广、使用Docker无疑能够获得极大的收益。 |
|