本帖最后由 规划经理 于 2016-5-16 18:21 编辑
2015年的IT行业什么名词最火?毫无疑问,Docker首当其冲。
过去的一年,Docker各大互联网公司竞相追捧,并先后赢得了Google、微软、Amazon、VMware等巨头的青睐,巨头们纷纷表示将保证自己平台与Docker技术的兼容性。微软还宣布来要推出面向Windows的Docker客户端,足见其地位如日中天。
那么关于Docker,你了解多少?信服研发哥,精心为大家准备了Docker技术分享系列篇,赶快一起get起来吧!!
Docker是神马? -- 低调奢华有内涵简单的来说,Docker是对容器技术(container,轻量级虚拟化技术)的再包装,是一个开源的应用容器引擎。 下图可以形像的表示出 Docker的原理及与虚机的区别:
Docker的出现,重新定义了程序开发测试、交付和部署过程,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。
为了更好的认识Docker,我们先来了解几个必备词汇:镜像,容器和仓库。
1、镜像(image):Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
2、容器( Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境,Docker 利用容器来运行应用。
3、仓库:仓库是集中存放镜像文件的场所,仓库注册服务器(Registry)上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。目前,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
为什么用Docker?
为什么大家对Docker如此看好,最根本的,站在未来的角度,Docker解决了三大现存问题:
1、节省开支:轻量硬件开支、高度弹性伸缩 一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。 另一方面,Docker能够使资源额达到充分利用。同样的物理资源,相对于虚机占用更少的资源开支,使用有限的物理资源下可并发运行多个容器实例,这使得轻量级的应用资源占用最小化得以实现。同时相对于虚拟机需要数分钟才能启动,Docker实例的启动速度可以达到秒级,因此可以快速应对访问量突发的业务。相对于原先需要启动一定虚拟机作为缓冲的方式,Docker可以大幅度提升资源利用率。
举个简单地例子:凌晨三点的时候只有很少的人会去访问你的网站,同时你需要比较多的资源执行夜间的批处理任务,通过Docker可以很简单的便实现资源的交换。
2、提高开发效率:容器化、自动化 容器的英文叫做:Container,也表示某公司的意思。而Docker也确实跟某公司有异曲同工之妙,Docker的理念是”一次打包,到处运行”(Build once,run anywhere)。Docker可以看作是用代码编写出来的国际某公司,它可以把任何应用及相关依赖项打包成一个轻量、可移植(Portable)、自包涵的容器。 以前部署代码都是代码级别的,有了Docker,则可以进行容器级别的部署。这样带来的最大的好处就是开发者本地测试、CI服务器测试、测试人员测试,以及生产环境运行的都可以是同一个Docker镜像。
3、简化发布运维:DevOps、蓝绿发布 蓝绿发布其实很简单,就是保持两套一样的生产环境,而实际上只有一套环境真正的对外提供服务,而另一套环境则处于待机状态。部署的时候,我们会先上线到蓝色环境中,如果测试没有问题了,再将路由切换到新的服务上。 蓝绿发布能最小化停机时间快速回滚;
除此之外,Docker还可以用于业务的灰度升级(A/B Test),即先让以一部分人使用A版本,另一部分人使用B版本; 未来的开发、测试以及运维流程可能是:
Docker的应用场景?
随着容器技术逐渐得到IT界的认可,CaaS(Container as a Service,容器即服务)也逐渐形成。而Docker作为CaaS技术的标杆是否已经得到企业的认可?是否投入生产呢?
2015年,VMblog.com和CloudCow.com共同组织了一次问卷调查。报告显示,Docker的早期用户中,63%的用于QA/Test,53%的用于开发,并且31%的用户计划在生产环境中使用Docker,阻碍企业使用Docker的最大因素在于其安全性以及缺少生产环境下的运维工具(两个原因各占49%左右)。同时,调查显示,目前企业对Docker的接受程度在不断提高。
对Docker应用最广泛的三个领域分别是:Test/QA应用;Web应用;大数据,企业应用。
综上,从不同的角色来看Docker的应用场景:
面向开发人员:快速开发、交付应用程序。开发环境的机器通常内存比较小,之前使用虚拟的时候,经常需要为开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。
面向运维人员:降低运维成本。正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器降低成本。Docker通过镜像机制,将你的代码和运行环境直接打包成镜像,扔到容器启动即可。
面向企业:Docker本身就发家于PaaS,在Docker面向企业,是可以提供Paas层的实现。
以上,抛砖引玉,欢迎各正在用、准备用、纯好奇的大小牛们跟帖分享下你的Docker实践经验、疑问,赢取社区S豆~
活动时间:2016年3月21日-2016年4月21日(已结束)
在活动期内,跟帖回复,分享你的Docker实践经验,也可以提出疑问
活动结束后,挑选符合要求的回复楼层,赠送500S豆!
感谢大家的积极参与,500个S豆已存入以下用户的账号,请查收! 帖子评论 | 回复者 | 6楼第一次听见Docker这个名词。听了小编的介绍,对Docker大致有了初步的了解。
感觉Docker的出现赶在了好时代,如果没有云,估计Docker的生存空间会大大缩小。因为Docker的底层还是要依托云架构,没有云,Docker的高性能低价格就无从谈起,其优势也就没有那么明显。
而且,这个Docker技术面向的领域好像不是很宽泛,主要集中在测试、研发这些搞代码的技术部门,与其他IT部门的关联好像不太大。
*另外,发现个错别字,小编纠正下。感觉勾出来的应该是“待理资源”。 | adds | 8楼回复:谢谢楼主分享。对Docker这个专业名词,还真的是第一次听到。听完楼主的介绍还是似懂非懂哈。不过听说有可能与虚拟化技术进行融合,倒是比较感兴趣的。 | Demo | 10楼回复ocker虽然不错,但有些问题值得思考:
1.从楼主的第一张图看出,Docker中的每个容器以及主机使用的都是同一套内核,如果该内核中出现任何的安全漏洞,可能会对每个容器造成巨大的影响,如果内核崩溃,那么这台主机上的所有容器都将毁于一旦。那么,问题来了,如何避免因内核漏洞而对容器造成的影响?
2.在这台主机上,如果其中任何一个容器被黑,且提升到root权限,那这台主机以及主机上的所有容器不都被黑了么?
3.如果Docker镜像仓库有含毒镜像,那不都废了?
以上三点纯属本人愚见,非常欢迎大神指导批评! | 修业时代朱 | 12楼回复:docker容器里 启动很快,秒秒种的事情,但是怎么对外提供服务, 比如,web,端口那个没有研究出来。 | cqbuyan | 13楼回复ocker依托于云,云应Docker更丰富,更像云 | 逆水的金鱼 | 16楼回复:学习了
Docker 是否能像aSV那样维护快照,快速恢复? | woshishui | 17楼回复ocker太不容易理解了,上网查了3个多小时,现在总算大概理解了!这么优秀的技术,好期待。。。。。。 | kkflsc | 24楼回复:我所理解的docker对轻量级应用应该是一个颠覆性的技术,但是对HPC领域需要调用大量CPU和内存的并行计算并没有什么卵用~以上理解不知道对不对 | 王松 | 25楼回复:说得很深奥,怪我才疏学浅,真的不是很明白,但是我理解的就是虚拟化,就是云,现在的社会公司越来越注重网络安全,但是呢网络设备投资高,维护起来麻烦,虽然有了堡垒机,但是他们更多的有时候会关注云和虚拟化的产品,尤其是云,什么都跑在第三方,没也了场地,人员,技术的限制,他们变得更加的省时省力省心,所以,我建议某公司在一些有发展的领域加大投入,这不是为了社会的需求,同时也是为自己的实力增砖添瓦,这么多的厂商,国内的国外的,要做到先进行列,就是人无我有,人有我优。小可愚见 | 紫色焰火 | 27楼回复:由于Docker是属于和容器级别的,所以其性能比物理机和虚拟机都强很多。
打包的应用可以移植到任何平台,因为它不依赖于任何的语言、系统和框架,这也是其灵活性的一方面。 | Anony | 29楼回复: 楼主很棒。
我的理解是,过去要在虚拟层上搭建操作系统,现在省略了这一步,带来两个好处:1、释放了操作系统这部分资源,提高主机利用率;2、解决了统一管理的问题,这就是容器的概念。
至于镜像、仓库的概念,就好理解了。镜像可以直接复制粘帖,出现一个新应用;仓库呢,Docker有一个大仓库Docker Hub,自己也可以见仓库,联合起来,就可以尽可能大地获取各种各样的资源,分享概念。 | 小书仔2015 | | | | |
延伸阅读:
这里说下我们Docker系列的分享思路,预计分三个系列 Docker基础篇:主要分享docker的一些理论知识,理解Docker以便更好的应用 Docker实践篇:以实战为主,带大家一起来做使用、测试 Docker应用篇:以分享应用场景、趋势为主,带大家使用docker改造自身业务 为避免纯理论偏枯燥,会交替穿插一些实践或应用篇 你怎么看呢? 如果有好的建议也欢迎跟帖哦~ |