编者注:
本文是对上海容器大会有容云专场梁胜博士演讲视频的文字回播,力求高度还原当天演讲内容未加个人观点,如在细节部分略有出入欢迎留言指正。(文章较长,分为上、下两个部分)
在美国的Dockercon大会中,大会主题是怎么样让Docker容器在企业中投产。大家一直在讲这个关于投产的话题,但其实这里面有一个很关键的问题,Docker是一项不错的技术,但是要变成生产力,仅仅是一些研发人员或者是互联网公司能把容器用好还远远不够。怎样让广大企业能够把容器用起来,能够进一步加快自己内部软件开发及部署的速度,这才是我们要达到的大目的。
大家知道,Docker从发布到现在,短短三年,发展非常迅速。这里我们能看到的24亿下载量,我相信其中绝大部分是开发者。因为今天我们讲的课题是企业投产,所以找一个全球比较大的金融系统企业来看。
这是去年年底开始的一个项目(编者著:高盛),项目计划一年内要把公司90%计算量从原有虚拟机,私有云等搬到容器上。这是一个非常大的目标,高盛不仅是世界上数一数二的金融公司,同时也是一个IT公司。他全公司大概有3万员工,有将近1万是IT人员,其中绝大部分是研发人员。所以像这种公司有目标有信心,要做到这个结果,我想经过这个过程,做出来的事情对我们大家也有很大启发。
我们想的一个问题是:短短三年时间,容器为什么有这么大的成长?大家知道,最早容器的应用应该是从研发者开始,他们使用容器只是在研发系统里面把容器搭好,后来为什么要把容器应用到生产环境中呢?我记得早年的时候跟一些把容器投产的厂商进行交流,那时候这些厂商还是互联网公司,归根结底的原因,还是研发生产环境的一致性。
当时我跟美国一个著名的互联网公司做交流,他们是比较早就大规模将容器投产的公司,将近100%的应用都在亚马逊上,这跟许多互联网公司一样。其实该公司内部的DevOps、CICD已经做得非常好。因为当时我也不太理解这么大规模的用容器,所以我就问他,你们为什么要用容器?因为如果在亚马逊上发布你可以用AMI发布,可以用云镜像、虚拟机镜像发布,都是非常自动化的。亚马逊上包括编排、调度、应用、基础设施等软件也很多,为什么要大规模用容器呢?
其实后来想想原因也很简单,你看亚马逊,包括国内的公有云比如阿里云、华为云等,这些东西是好,但是研发人员没有办法在本地主机上用,所以这才是个问题:你不能让研发人员每天一做研发就得上局域网,什么研发系统都搭在云上,当地编译什么都得上去保存下,这个体验很差。所以这样一想,就算今天大家没有真正计划想脱离亚马逊,或者说国内企业根本没计划脱离私有云,在这种情况下其实对容器的需求依然很强烈,因为从根本上来讲有一个研发生产环节一致性的需求。所以即使没有混合云,但每个人都有一个混合云的需求,这最早就是这样出来的。从这个角度来讲,这就是因为容器投产势在必行。从下载量来看现在容器已经非常普及,但是容器不能仅限于研发人员,也不能仅限于CICD,最后它一定是大规模的实践投产,这是一个必然的事情。
其实业界目前对此也没有很深刻的认识,我们一直在国内外做业务,可能在中国的发展并不比国外慢很多。我也经常听到有人在说,容器这东西是好,研发人员都在用,DevOps环节也开始用起来了。虽然真正在企业中投产落地还是很少,但这是必然的事情,这不是一个会不会投产的问题,这是一个时间的问题。Docker是一个新技术,发展才短短三年,还需要一段时间对市场认知做一定工作,使用容器投产势必在大企业会有非常大的推广,这已经很明显。去年我来中国开容器会的时候,基本演讲分享的都是互联网公司,而今年可以看到,已经有很多其它行业企业在这方面做了很多工作,也有一些是实践分享,所以这其实是一个很大的进步。
下面我想花一点时间讲一下容器在企业投产中的具体模式。我为什么要挑这四个场景跟大家分享呢,因为我们公司从去年进入中国市场,到现在为止已经跟用户有了一定接触。我们早期的时候架构师洪喜做了很多工作,跟国内客户有了很多交流,所以总结出这四种模式。这方面他做得很好,所以我想拿出来跟大家交流。(编者注:马洪喜为有容云联合创始人兼首席架构师,此前担任Rancher Labs中国区技术负责人)
其实容器一个很重要的场景,就是新一代的私有云跟混合云。现在云计算还是国内非常热门的东西,我知道很多企业都在构建私有云,也知道有很多非常强大、让大家认可的私有云技术。但是从国外来看,早期第一批私有云建设任务并不是特别成功。很多人在建私有云,但其实服务器虚拟化就可以实现很多私有云的目标,如果说真要用私有云,很多人会说那还不如直接映射到公有云上,公有云有取之不尽用之不竭的资源,私有云怎么做都不可能将资源池做得那么大,所以其实这几年私有云发展碰到了一些问题,但并不是说私有云的趋势不存在。
直到后来容器技术处出现了,给了企业容器云这样一个机会。容器云跟私有云非常相似,不同的地方在于私有云上面run的是虚拟机,容器云上面run的当然是容器。容器云下面运行的只要是台不管从哪来的Linux主机就行,而不像之前的私有云,你一定需要一个ROM。如果你要搭一个OpenStack,你可以用私有云;你也可以通过容器云把之前的主机整合上来,如果之前你投资做了一个大规模VMware集群,也可以组合进来,或者你现在想用阿里云,亚马逊,你也可以很容易的组合进来。所以其实你可以把容器云叫做混合云,但是我更喜欢叫做私有云,新一代的私有云。云是私有的,但是资源可以是公有的,资源是取之不尽用之不竭的,但是你对资源的控制完全是根据企业应用出发的,所以在我看来最主要的场景是企业容器云是新一代的私有云。
这也是洪喜做的一个案例,有了私有云之后,就是在今天也确实有一些企业客户有这样的愿望,把一个应用规定怎么迁移。容器还没做到支持活迁移的程度,但是他可以至少做到在Disaster或是扩容的时候可以有条理的从私有数据中心迁到阿里云、亚马逊,或者可以做到应用同时跨多个数据中心,跨多种云,这是第一种场景。下面我跟大家分享第二种场景。
现在IaaS的概念已经被业界广泛接受,不管你是做公有云还是私有云,哪怕你是在VMware上搭一个自服务的界面做得像IaaS,但是从根本上来讲,IaaS不管是亚马逊、OpenStack还是阿里云,最后都只解决了一个快速部署虚拟机的问题。但是对大部分企业来讲虚拟机不能解决所有的问题,其中最重要的一个是应用部署的问题。
这是一张去年6月份美国通用电气公司GE在Docker上的一张图片,我把它拷贝下来。它主要的意思是前面花了15分钟来部署虚拟机,这里做得很有效,用亚马逊,虚拟机部署出来很快,但是后来他花了两三个星期才把应用部署、调配好,最后做出来的东西还不可复制,还要手动与那些杂乱的脚本捆解,所以这个IaaS其实并不能解决企业从头到尾敏捷开发的问题,所以容器出现就是一个很大的机会。
我这里讲的一个例子,左边是一个模板,这里用的是docker-compose, docker-compose大家知道,只是一个编排容器的模式,但用得比较广泛,因为比较简单。当然你也可以用马拉松部署,可以用Kubernetes部署,可以用很多新的技术。但是其实不管你用什么技术,哪怕你只用一个bash脚本,最后都只是一种模式,因为容器可复制,容器启动快,所以容器彻底改变了应用部署和管理的模式。这只是一个我们产品的截屏,但不是只有我们产品做了这个事情,很多在场的厂商可能也做了。
在有了容器后很容易做出这样一种体验来,把服务器上的应用做成类似于手机上应用的体验,就像你到类似一个应用商店、应用商城的地方挑选你所需要的应用。这些应用关键的地方不在于脚本,关键的地方是前面这些脚本给了一个模板,你拿到这些模板之后你可以很快的一键点击完成部署。而且在部署之后,将来的升级、迁移,或者部署出现错误之后的回滚,都可以自动化。
就在十五分钟之前我跟我的一个客户做了交流,他们的想法比这个更加先进。他们想的是:既然应用商店可以让我一键部署、一键升级、一键降级,那为什么我不可以把这些应用里面所有的模板放到EXI的XEN里面去,这样我可以去控制、无止境的保留我生产部署环境的一种状态,我可以后退看到状态的改变;如果这个状态有问题,我可以后退到之前的状态,这是一种非常强大有效的用法。其实这也是大家的需求。我做IT很多年了,十年以前,IT公司都有这个需求,包括我自己做应用时也有这个需求。只是当时技术不到位,所以最后只有一些互联网公司可以通过自己内部的开发达到灰色发布、滚动式升级降级这些效果。而现在有了容器技术之后,可以让广大企业都得到这种好处。所以有的时候部署应用也不仅仅是新一代敏捷式简单的应用。
这也是我们客户的一个例子。容器有什么好处呢?容器只是一个包装方式,但这是对企业特别适用的一种方式。在做容器之前我花了大概六七年的时间去研究云 ,之前也介绍了我是思杰公司的CTO,专做云计算。那时我们做云计算市场也不是很开阔,我们对客户讲云,告诉客户你要把你的研发、应用的方法改一下;你原来那是老式的做法,现在云的做法不一样了。但是这种坎很难跨过。很多客户会说,你这个云是好,但是我的应用在上面run不了,我要run
BMC Remedy,你的应用实在是太旧,我这是很成熟的应用,我不想动它,也没办法把它搬到云上去。后来到了容器发现,除了BMC Remedy,包括现成的运行在Application server上的应用,比如 Web C、Weblogic,只要是进程它都可以很容易的打包成容器,然后可以很快的部署。所以其实从很大角度上来讲,容器在企业里面的应用落地比早年的云计算容易的多。归根结底它不仅仅是对新式的应用、原生云应用的试用,它对传统稳定的应用起到很大效果。比如说你一旦把这些应用,例如BMC这种的,一旦放到一个容器里面之后,就消除了它对运行环境的依赖性。同一个容器打包后放到哪都能运行。
刚我举的这个是Remedy的例子,一个容器做得特别大,特别复杂,把企业级应用放在上面。另外一个角度来说就是做数据也好,计算数列也好,你做的集群非常大,你做的容器个数非常多,这更像是一个原生云服务,容器都可以支持得很好。
(上篇完,下篇更新中。。。)
温馨提示
对Docker容器技术或容器生产实施感兴趣的朋友欢迎加群454565480讨论。我们汇集了Docker容器技术落地实施团队精英及业内技术派高人,在线为您分享Docker技术干货。我们的宗旨是为了大家拥有更专业的平台交流Docker实战技术,我们将定期邀请嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。