机房360首页 CalConv();
当前位置:首页 » 云计算资讯 » 应用容器带动IT新时尚

应用容器带动IT新时尚

来源:TechTarget中国   作者:DJ编辑 更新时间:2016-2-22 10:34:45

摘要:当行业观察者回顾2015年重大主题时,应用容器一定会在这一年的技术排名中名列前茅。似乎已经到处都是容器,从公有云—AWS发布了EC2容器服务,到私有云—VMware提供了vSphere的容器支持预览都是。

  当行业观察者回顾2015年重大主题时,应用容器一定会在这一年的技术排名中名列前茅。似乎已经到处都是容器,从公有云—AWS发布了EC2容器服务,到私有云—VMware提供了vSphere的容器支持预览都是。

  容器的炒作甚至令有经验的专业人士都倍感折磨,但大多数人对基础知识仍理解有限:比如容器和传统虚拟的区别是什么,各自优缺点是什么,有哪些用户案例等。据2015 OpenStack峰会一位与会者的文章,甚至在懂行的人群中具备容器经验人也是很少的:

  在开幕式的主旨演讲中,当其中一位发言者询问6000名与会者“‘在座有多少人对进一步了解Docker感兴趣?’时,似乎所有人都举手了。然后他又问‘有多少人在生产中使用了Docker?’几乎所有的手马上都放下来了。”尽管没有东西能够代替亲自试验,我还是想通过聚焦应用容器基础,把一些有前景的使用场景过一遍,以及讨论在以VM为中心的管理环境下的应用部署和监控问题来引导大家的学习过程。

  应用容器优缺点

  应用开发者对性能的追求永无止境,这是容器如此流行的原因之一。它们比VM更加高效,内存封装要小很多,而这又转化为更快的应用启动和停止时间。一组基准测试(图1、图2)发现Docker容器使用基于内核虚机(KVM)实例1/3的内存就能在前者所需一半的时间内启动服务器。其他测试表明,更大的性能改进可以让应用启动时间在毫秒级完成。

27181012_4071
27181032_0477

图2:Docker容器启动时间只有KVM实例的一半

  原生容器应用—那些针对模块化、水平伸缩性以及多租户部署的应用,几乎可以即时针对工作负荷进行伸缩。较低内存使用也使得每台服务器容纳的应用密度更高。的确,基准测试表明容器化运行时的性能相当于裸服务器的97%。

  因为容器封装的知识应用运行时环境,而代码、库都不在整个OS栈里面,所以可移植性也更高。比方说,在使用像Docker这样的标准包格式时,同一个应用容器既能在内部Linux服务器运行,也能在AWS上运行而不需要修改。这种应用抽象水平也意味着容器可以用流行的自动化工具,如Ansible、Chef或Puppet来进行配置部署。

  容器不好的地方是它们提供的应用间隔离要比全VM环境要少,可能会没那么安全,容易导致流氓代码从一个容器越狱进入另一个容器。

  常见用例

  考虑到容器的效率,应用容器在云服务提供商那里相当流行也就不足为奇,因为他们都希望通过更大的服务器整合来实现资源利用的最大化。如果4、5个容器可以在同一片服务器上面跑,为什么还要用VM呢?

  容器效率还使得它们成为复杂、多租户工作负载,如使用Web服务器的多层应用、中间件、数据库这些每一个用户实例都作为独立容器负载的理想环境。通过把运行时库封装进可移植、易于部署的镜像,容器是的服务提供商能迅速增加新的应用或同一软件的多个版本的同时提供运行时隔离。这使得应用容器成为有很多复杂依赖的软件(如WordPress、Drupal、Joomla等内容管理系统),或私有像Flask、.NET或Slim的复合微服务的更大选项。

  因为容器允许同一应用代码的许多版本共存并在同一服务器隔离,所以可以成为采用持续交付和集成的快速应用开发的很好平台。代码隔离意味着整个开发过程,包括开发、测试、筹划和产品部署都能在同一个系统上面跑。将应用容器与Docker Swarm、Kubernetes、AWS CodeDeploy或Elastic Beanstalk OpsWorks这样的编排平台结合能够进行快速部署,因为开发者能够实现由于版本管理和自动化工作流的流水化。

  容器还可以用来对遗留的一体化软件进行“云化”。也就是说,你可以部署不是针对多租户分布式系统的应用,或作为自包含、在共享云基础设施上可重定位镜像的微服务。容器隔离和抽象简化了可重复配置和管理,使得一体化应用能利用云自动化软件进行部署和监控。这种容器提供的隔离还意味着遗留系统很容易就能部署到AWS EC2 Container Service、Azure Container Service或Google Container Engine这样的公有IaaS容器上面。

  容器管理问题

  2015年供应商纷纷给自己的产品增加了容器支持,VM和云管理软件需要时间来跟上形势。比方说,VMworld2015的焦点之一就是介绍vSphere Integrated Containers,它允许控制兼容Docker API的容器,并可作为vSphere资源池的一部分进行消费。类似地,Windows Server 2016技术预览版也包含有Windows Server Container Manager,这可以让你通过PowerShell一级仍然比较粗糙的GUI工具管理容器,包括兼容Docker的和新的Hyper-V容器。

  在Linux-OpenStack这一块,OpenStack Nova能够用管理程序驱动控制Docker容器。类似地,Dell也在用OpenManage System Administrator来集成Docker,而RedHat的Atomic Host容器平台带了Kubernetes。从长远看,要找能够集成其他的VM和云管理平台、全面IT运营管理以及应用性能管理套件的容器管理。

  尽管炒得很热,但应用容器既不会取代传统的VM,也不会成为一时的流行。其技术优势使得它们可以成为许多应用完全服务器虚拟化的很好替代品,而Microsoft Nano Server、VMware PhotonOS等新的微VM技术的出现有望结合容器的性能好处和VM的彻底隔离和管理。IT架构师的部署选择从来没有这么丰富过。关键是要理解每一种平台的相对优势,然后做出明智选择。

  责任编辑:DJ编辑

机房360微信公众号订阅
扫一扫,订阅更多数据中心资讯

本文地址:http://www.jifang360.com/news/2016222/n638178404.html 网友评论: pubajax('/comment.aspx','id=247078886191&commCount=1&ChID=0&Today=0','gCount2470788861911670');条 阅读次数:pubajax('/click.aspx','id=247078886191','click_247078886191');
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
相关评论
正在加载评论列表...
function GetCommentList(page) { var Action='id=247078886191&ChID=0&CommentType=GetCommentList&page='+page; var options={ method:'get', parameters:Action, onComplete:function(transport) { var returnvalue=transport.responseText; if (returnvalue.indexOf("??")>-1) document.getElementById("Div_CommentList").innerHTML='加载评论列表失败'; else document.getElementById("Div_CommentList").innerHTML=returnvalue; } }; new Ajax.Request('/comment.aspx?no-cache='+Math.random(),options); } GetCommentList(1);
评论表单加载中...
function GetAddCommentForm() { var Action='id=247078886191&ChID=0&CommentType=GetAddCommentForm'; var options={ method:'get', parameters:Action, onComplete:function(transport) { var returnvalue=transport.responseText; var arrreturnvalue=returnvalue.split('$$$'); if (arrreturnvalue[0]=="ERR") document.getElementById("Div_CommentForm").innerHTML='加载评论表单失败!'; else document.getElementById("Div_CommentForm").innerHTML=arrreturnvalue[1]; } }; new Ajax.Request('/comment.aspx?no-cache='+Math.random(),options); } GetAddCommentForm(); function CommandSubmit(obj) { if(obj.UserNum.value=="") { obj.UserNum.value="Guest"; } if(obj.Content.value=="") { alert('评论内容不能为空'); return false; } var r = obj.commtype; var commtypevalue = '2'; for(var i=0;i
推荐图片