新技术越来越多,最近不断地被周围的朋友洗脑,俨然再不写点新技术,就没有脸在IT圈里混了。好吧,那让我也拥抱一下开源技术,写写Docker。那Docker到底是个啥?



Docker中文手册上是这样说的:

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。



Docker与“集装箱”

我们经常说Docker它帮助我们实现了“集装箱”的功能。


现实世界中集装箱是这样的,它为我们解决了货物的运输问题, “集装箱”可以帮助我们解决各种型号规格尺寸的货物在各种运输工具上方便运输。


Docker它是个啥?_第1张图片


那么IT技术中的Docker是干什么的呢?原来它是为了帮助我们解决软件的“运输”问题。它可以将各种应用程序和他们所依赖的运行环境打包成标准的container/p_w_picpath,进而发布到不同的平台上运行。


Docker它是个啥?_第2张图片


所以,在某种程度上,Docker可以看作是用代码编写出来的国际集装箱。Docker可以把任何应用及相关依赖项打包成一个轻量、可移植、自包涵式的容器,该容器拥有标准的操作,从而能够实现自动化。



从集装箱的特点,看Docker

Docker它是个啥?_第3张图片


内容无关性

相同的集装箱几乎可以容纳任何类型的货物,Docker也可以封装代码、环境、配置文件,负载及其依赖项。


硬件无关性

集装箱允许把货物从船上运输到火车、卡车上,直到运输到仓库,整个过程无需整理货物或打开容器。Docker使用操作系统基元(例如:LXC)几乎可以在任何平台上运行——虚拟机、裸机、OpenStack、公共IaaS等,并且无需修改。


内容的隔离和交互

集装箱无需担心各种箱子里的货物是什么,它们之间会不会彼此影响,我们可以堆积运输。Docker让资源、网络和内容隔离,避免依赖性。


自动化

集装箱标准的规格使其易于实现自动化装卸、搬运等,Docker使运行、启动、停止、提交、搜索等都有标准的操作。


高效,快捷

集装箱无需打开或修改,可以在起始两地快速地移动/运输,Docker是轻量级的,一次构建可以随处运行,方便我们进行快速移动和操作。

Docker它是个啥?_第4张图片



那问题来了:Docker和虚拟化的区别是什么?


讲段故事,来和大家解释一下

Docker它是个啥?_第5张图片




古代有一位国王在它的国境里视察,因为路面崎岖不平,还有很多碎石头,刺得国王的脚又痛又麻。

回到了王宫后,他下了一道命令,要将国内所有的道路都铺上一层牛皮。让他自己和全国的人走路不再受刺痛之苦。众大臣听了国王的话都一筹莫展,知道这很难。即便杀尽国内所有的牛,也凑不到足够的牛皮来铺路,而且花费昂贵。这时,一个聪明的仆人向国王建言:可以试着用牛皮将脚包起来,大王的脚就不会忍受痛苦了。国王听道而顿悟了,便收回命令,采纳了建议,于是,皮鞋就这样发明了出来了。



引申到Docker和虚拟化

OK,大家一定想问我,韩梅梅童鞋你想说明什么?回顾一下故事,解决脚痛不方便的方案有二:第1方案是:将所有道路都铺上一层牛皮(如VMware),实在不经济实惠。第2方案是:用两片牛皮包住脚,这就是皮鞋(Docker集装箱)。那么,你领悟到什么呢? 至少明显知道第2方案可带来可观的经济效益。


传统的虚拟化(virtualization)技术就相当于在各道路(实体机器)上铺一层牛皮(VM, 虚拟机),然后让国王的脚(App)在牛皮(VM)上走路(执行)。传统上云平台采取虚拟化手段来满足用户个别的资源需求分配,以及确保其可用性和隔离性。然而无论是KVM还是Xen等Guest OS都很浪费资源又难于管理, 都不如Docker集装箱(皮鞋)来的更加灵活、快速和节省资源。


好吧,放张比较图让大家看一看


Docker它是个啥?_第6张图片



那问题又来了:Docker会不会取代虚拟化

现阶段,传统的虚拟技术还不会被取代。Docker或者说容器技术和虚拟机并非简单的取舍关系。目前,很多企业仍在使用虚拟机技术,原因很简单,他们需要一个高效,安全且高可用的架构。然而,刚刚面世两年的Docker还没有经历沙场考验,CaaS(Container as a Service,容器即服务)概念也是近两年才刚刚出现。无论是应用管理还是运行维护方面,Docker都还处于发展与完善阶段。


结语

俗话说:天下武学,唯快不破;在更新迭代如此之快的IT更是如此,一夜成名早已不是什么新闻。Docker 这个技术公司,向我们证明了,成为一个"国际巨星",只需要一个月。2013年2月决定开源,到2013年3月20日发布Docker0.1,只用了一个月的时间。到今天,一个围绕着Docker的小型初创企业生态体系逐渐形成。Docker先后赢得了Google、微软、Amazon、VMware等巨头的青睐,巨头们纷纷示意将保证自己平台与Docker容器技术的兼容性,Docker势不可挡。