技术系列 | Docker系列1 | Docker是神马

Posted 信服研发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术系列 | Docker系列1 | Docker是神马相关的知识,希望对你有一定的参考价值。

2015年的IT行业什么名词最火?毫无疑问,Docker首当其冲。

过去的一年,Docker各大互联网公司竞相追捧,并先后赢得了Google、微软、Amazon、VMware等巨头的青睐,巨头们纷纷表示将保证自己平台与Docker技术的兼容性。微软还宣布未来要推出面向Windows的Docker客户端,足见其地位如日中天。

那么关于Docker,你了解多少?信服研发哥精心为大家准备了Docker技术分享系列篇,赶快一起get起来吧!!

Docker是神马? -- 低调奢华有内涵

简单来说,Docker是对容器技术(container,轻量级虚拟化技术)的再包装,是一个开源的应用容器引擎。

下图可以形像地表示出 Docker的原理及与虚机的区别:


Docker的出现,重新定义了程序开发测试、交付和部署过程,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

技术系列 | Docker系列1 | Docker是神马

为了更好地认识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实践经验、疑问。


以上是关于技术系列 | Docker系列1 | Docker是神马的主要内容,如果未能解决你的问题,请参考以下文章

我爱java系列---Docker的介绍和安装

Docker虚拟化技术系列之-自动化部署管理

实战Docker到Kubernetes技术系列视频教程

Docker系列:全面认识Docker和基本指令

Docker虚拟化技术系列之-磁盘扩容

docker系列1-简介