首页 > 云计算 > 正文

运行Docker:物理机vs虚拟机,五方面详细对比!

2018-07-04 10:12:32  来源:新钛云服

摘要:本篇就针对“Docker运行在物理机还是云主机上,该如何选择?”这个话题展开讨论。
关键词: Docker
  从2013年3月dotCloud公司发布第一个版本的Docker以来,已经有越来越多的公司将自己的线上业务跑在了Docker里面,大量的实战经验证明Docker是一种值得信赖和拥抱的技术。不论网上,还是各种技术交流会上,大家也都在交流Docker的使用经验,Docker的话题很多,本篇就针对“Docker运行在物理机还是云主机上,该如何选择?”这个话题展开讨论。
 
\
 
  对于这个问题,很多朋友第一反应可能是先找找官网有没有类似的最佳实践,笔者也顺着这个思路来,在搜索之后发现Docker官方并不要求你一定要将Docker跑在物理机或者云主机上,它更关注的是应用而非基础架构,无论是物理机,还是云主机,无论你的操作系统是CentOS,Fedora,Ubuntu,Debian,MAC,Windows它都支持。
 
  官方没有明确的最佳实践,那对于新用户来说怎么办呢?
 
  习惯性的想到了另一条路“借鉴”;对于新用户,借鉴是个不错的选择,看看大公司都是怎么用的,比如BAT,京东,网易他们是怎么用的。不过就笔者在与这些公司的朋友交流之后发现,这条路似乎也给不了我们答案。他们的Docker跑在物理机和云主机里面都有,大家也都用的很好。
 
  两条途径都给不了我们现成的答案,那看来只能靠自己了。
 
  明确了Docker在物理机和云主机里面都能跑,而且每个场景也都有人在线上用,那我们就来比较一下,各种的优势和不足,简单点就从五个关键字出发。
 
  1.性能
 
  性能包括CPU性能和IO性能,相同配置的情况下,物理机都是胜出的,这点源自于云主机的硬件都是由软件模拟出来的(passthrough硬件给云主机的情况,暂不考虑,因为一般情况下passthrough的云主机很难得到,且成本较高),性能到底损耗多少呢?
 
  国外有人做过相关的测试,使用了一台8核32G Amazon EC2 m4.2xlarge 云主机和一台8核32G的物理机进行对比测试,测试的结果是物理机上比云主机上运行Docker,在IO和CPU方面要快25%-30%,当然这个结果只能代表他的测试场景,但大家也可以参考他的测试方法,在自己的环境里面亲测一下。25%-30%的性能优势,物理机完胜;
 
  2.多租户
 
  同一个Docker节点,如果多人使用,且对于某些用户的工作负载无法共享内核或者需要监听相同的端口。在这种情况下,因为云主机提供了额外的隔离层,所以是物理机无法满足的,云主机完胜。
 
  3.自动化
 
  自动化,是目前大家都绕不开的话题,因为对于繁琐重复的事情,谁都不喜欢天天干(特别是运维),所以大部分公司,都有运用自动化,差别在于大公司有完整的平台,小公司有一堆脚本。
 
  目前各大云基本都有各自的API,可以非常方便的管理自己的云主机,创建,删除,都非常方便。但是对于物理机的API,这个就非常困难了,因为涉及到不同的型号,使用IPMI也需要做大量的适配,目前能提供物理机租赁的云厂商也没有好用的API提供给用户。所以当需要临时搞活动的时候,结合自动化/API, 将Docker跑在云主机上是唯一能满足需求的方案。
 
  4.灵活性
 
  灵活性包括两方面,一是服务器配置调整;云主机配置调整,只需要关机,页面升配,开机,整个升配过去1-2分钟就能搞定;物理机调整配置,首先需要确认是否支持,比如硬盘槽位够不够,服务器网口够不够,网线是否布好,交换机口够不够等等,即使可以升配,那升级硬盘还要系统里面重新做raid,升级内存还需要开机箱等等,一系列繁琐的操作,最终完成升配那最快也需要几个小时。1-2分钟 PK 几个小时,云主机完胜。
 
  二是用户配额,云主机的配置是灵活的,可定制的,比如某个用户,需要搭建一套测试环境,需要8核16G的资源就够了,这种情况下,一台云主机即可满足。但如果使用物理机的话,就非常不灵活了,因为物理机在采购的时候,通常是一个规格的,不可能穷举不同的规格。所以这一点上,云主机完胜。
 
  5.灾难恢复
 
  硬件故障,这个谁都无法完全避免,那么出现故障的时候,恢复一台云主机和恢复一台物理机哪个更快?目前的公有云,很多都采用的计算节点和存储节点分开的架构,存储节点做了高可用,所以计算节点出现硬件故障时,只需要将云主机做迁移,再开机即可完成故障恢复。时间可以控制在5分钟内完成。
 
  物理机故障恢复,首先需要判断是什么故障,一般硬盘故障都不影响系统(物理机硬盘都会做raid进行保护),内存故障,主板故障,如果有备机,那可以进行更换至少30分钟+,如果没有备机,那就需要报修,派单,上门更换,整个流程走完需要1-2天(这个还取决你购买的服务,服务器是否过保等等);5分钟 PK 1-2天,云主机完胜。
 
  总结
 
  在通过“性能”,“多租户”,“自动化”,“灵活性”,“灾难恢复”这五个关键字的对比分析之后,简单总结一下, 对于大多数场景,Docker运行在云主机上是就够了,但是对性能要求非常高的应用,还是建议直接在物理机上运行Docker,所以混合云,才是最终的解决之道。将Docker混合部署在物理机和云主机上,根据应用的需求,灵活的分配资源,在满足业务的前提下,最大限度的提高资源利用率才是真正的最佳实践。
 
  作者介绍
 
  杨俊俊 新钛云服运维架构师
 
  十年运维经验,曾任盛大游戏资深云工程师,前隆科技系统运维主管。《深度实践KVM》,《Linux运维最佳实践》作者。精通KVM,VMWare,Docker等虚拟化相关技术。在基础架构、虚拟化和自动化运维方面具有丰富的实战经验,主导实施过上万台服务器上云迁移。

第三十八届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。