有容云:梁胜-如何让Docker容器在企业中投产(上)

编者注:

本文是对上海容器大会有容云专场梁胜博士演讲视频的文字回播,力求高度还原当天演讲内容未加个人观点,如在细节部分略有出入欢迎留言指正。(文章较长,分为上、下两个部分)

在美国的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容器生态圈。

时间: 2024-10-10 07:19:09

有容云:梁胜-如何让Docker容器在企业中投产(上)的相关文章

有容云:梁胜-如何让Docker容器在企业中投产(下)

编者注: 本文是对上海容器大会有容云专场梁胜博士直播视频的文字回播,力求高度还原当天演讲内容未加个人观点,如在细节部分略有出入欢迎留言指正.(文章较长,分为上.下两个部分) 前情提要: 在上篇中梁博士讲了容器技术短时间内爆发的根本原因,容器在企业中投产的必要性.必然性以及容器投产四种场景中的前两种:新一代的私有云.混合云环境:企业应用商店和一键部署:本篇将介绍最后两种场景:多环境.多资源池的DevOps流水线,构建轻量级PaaS服务,以及微服务.容器云等方面的内容,阅读前文清点击:梁胜 | 如何

有容云-PPT | 当微服务遇见容器

编者注: 本文为10月29日有容云高级技术顾问龙淼在Docker Live时代线下系列-广州站中演讲的PPT,本次线下沙龙为有容云倾力打造Docker Live时代系列主题线下沙龙,每月一期畅聊容器技术生态,北京,深圳,广州,上海--有容云跨城带你起航!文中跟大家讨论了以Docker为代表.日益崛起的容器技术,与微服务又将擦出怎样的火花呢?尝鲜难免需要代价,我们将面临哪些挑战,如何迎接挑战,具体详情见以下PPT分享内容.

【原创】Docker容器及Spring Boot微服务应用

Docker容器及Spring Boot微服务应用 1 什么是Docker 1.1 Docker的出现 问题一:项目实施环境复杂问题 传统项目实施过程中经常会出现“程序在我这跑得好好的,在你那怎么就不行呢?! ” 这是一个典型的应用场景,Docker image中包含了程序需要的所有的运行时依赖,比如java的程序,肯定要在image中包含jdk:比如Python的程序,肯定要在image中包含对应版本的Python解释器.Docker把整个运行时环境打包放到image中,所以搞定了环境依赖问题

一图看尽Docker容器文件系统

Dockerfile是软件的原材料,Docker镜像是软件的交付品,而Docker容器则可以认为是软件的运行态.从应用软件的角度来看,Dockerfile.Docker镜像与Docker容器分别代表软件的三个不同阶段,Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石. Docker镜像 Docker镜像是Dockerfile的产物,是Docker容器的前提,大有承前启后之意.Docker技术发展两年有余,相

docker容器从入门到实战0826

##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com #docker官网文档和镜像:https://docs.docker.com/samples/centos/ #docker官网的容器网络配置:https://docs.docker.com/engine/us

理解Docker容器的进程管理

摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)"的方式.这种方式非常适合以单进程为主的微服务架构的应用.然而由于一些传统的应用是由若干紧耦合的多个进程构成的,这些进程难以 Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per contain

docker容器从入门到实战0826(笔记整理)

##docker容器安装和配置### #docker的git-hub网站(账号rshare,密rshare520):https://github.com/login #docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com #docker官网文档和镜像:https://docs.docker.com/samples/centos/ #docker官网的容器网络配置:https://docs.docker.com/engine/us

docker实战——在测试中使用Docker

在之前几章中介绍的都是Docker的基础知识,了解什么是镜像,docker基本的启动流程,以及如何去运作一个容器等等. 接下来的几个章节将介绍如何在实际开发和测试过程中使用docker. 将Docker作为本地Web开发环境是使用Docker的一个最简单的场景.这个环境可以完全重现生产环境,保证开发环境和部署环境一致.下面从将Nginx安装到容器来架构一个简单的网站开始. 使用Docker测试静态网站 ## 创建一个sample的镜像目录并创建一个Dockerfile # mkdir sampl

新书发布《每天5分钟玩转Docker容器技术》

后台不时收到关于纸质版教程书籍的询问,今天终于可以给大家一个交代了. <每天5分钟玩转Docker容器技术>现已在各大书城上架. 比较了一下,目前京东上最实惠:https://item.jd.com/16936307278.html 下面回答几个大家可能关心的问题. 1. 这本书包含哪些内容? 按照年初的计划,整个教程会涵盖容器生态系统中最重要的容器技术和平台技术. 由于版面篇幅的限制,这次出版的<每天5分钟玩转Docker容器技术>内容就是容器技术部分,具体内容如下: 平台技术部