一款产品从开发到上线,一般都会有开发环境,测试环境,运行环境。
如果有一个环境中某个软件或者依赖版本不同了,可能产品就会出现一些错误,甚至无法运行。比如开发人员在windows系统,但是最终要把项目部署到linux。如果存在不支持跨平台的软件,那项目肯定也无法部署成功。
这就产生了开发和运维人员之间的矛盾。开发人员在开发环境将代码跑通,但是到了上线的时候就崩了。还要重新检查操作系统,软件,依赖等版本,这大大降低了效率。造成了搭环境一两天,部署项目两分钟的事件。
如果一个产品需要使用mysql集群,redis集群,Haddop集群,或者elasticsearch集群等等,不同的人都要用到这些,那每一个人都要对集群进行配置,如果有一个位置不同就有可能产生重大问题。况且配环境是一个极其繁琐,很需要耐心和细心的。回想一下自己刚学编程的时候,配置环境变量是不是都有可能耗费很长时间,这些集群就更不用说了。
那能不能把环境也拷贝过来呢?docker给了我们答案。
开发人员把环境配置好,将需要运行的程序包运行成功,然后把程序包和环境一起打包给运维人员,让运维人员部署就可以了。这大大提高了项目上线的效率。
如果需要配置集群,只需要一人配置好,然后打包发给大家就可以了。
docker通过隔离机制,,可以将服务器利用到极致!
Docker是dotCloud公司开源的一款产品。dotCloud公司是2010年新成立的一家公司,主要基于PaaS(Platform as a Service,平台及服务)平台为开发者提供服务。在PaaS平台下,所有的服务环境已经预先配置好了,开发者只需要选择服务类型、上传代码就可以对外服务,不需要花费大量的时间搭建服务和配置环境。dotCloud的PaaS平台已经做得足够好了,它支持几乎所有主流的Web编程语言和数据库,可以让开发者随心所欲地选择自己需要的编程语言、数据库和编程框架,而且它的设置非常简单,每次编码后只需要运行一次命令就可以把整个网站部署上去;并且利用多层次平台的概念,理论上,它的应用可以在各种类型的云服务商。两三年下来,虽然DotCloud也在业界活的不错的口碑,但由于整个PaaS市场还处于培育阶段,dotCloud公司表现得不温不火,没有出现爆发式的增长。
2013年,dotCloud的CEO Solomon Hykes决定把dotCloud内部使用的Container容器技术单独拿出来开源,2013年3月发布Docker的V0.1版本,并且基本保持每月一个版本的迭代速度,到了8月,Docker已经足够火爆,并广受好评,各种各样的技术论坛和技术峰会都开始热烈讨论与推荐Docker,这时Docker才只发布到V0.6版本。
随着Docker的流程,越来越多的优秀开发者加入Docker社区参加开发。这里值得一提的是,Docker是基于Linux3.8以上内核,在aufs分层文件系统下构建的,主要运行在Ubuntu的系统下。REHL/Centos当时最新版6系列还是基于Linux2.6.23内核,无法运行Docker。REHL/Centos尽快支持Docker,RedHat公司的工程师亲自出马,加班加点为Docker贡献代码,新增对devicemapper的支持来时间文件系统分层,终于顺利地让Docker在REHL/Centos运行起来。
随着Docker在业界的知名度越来越高,到了2013年10月,dotCloud公司索性更名为Docker股份有限公司,工作的重心也从PaaS平台业务转向全国全面围绕Docker来开发,到了2014年1月,Docker公司宣布完成15000万美元的融资,雅虎联合创始人杨致远也参与跟投。
虽然Docker迟迟没有发布1.0版本,但好多公司已纷纷把Docker应用到生产环境,其中美国奢侈品电商Gilt的CTO说:“使用Docker后,突然发现,传统方式中的各种问题都消失了,我们接下来要考虑如何进一步提高软件生产效率,让软件开发更加安全和创新。这种转变太不可思议了”。
千呼万唤,到了2014年6月9日,Docker终于发布了V1.0版本,并举办了DockerCon2014大会,大会上来自goole、ibm、Redhat、rackspace等公司的核心人物均发表了主题演讲,纷纷表示支持并加入Docker的阵营。Docker的CTO Solomon Hykes充满雄心壮志的说:“我们能把互联网升级到下一代”,Google的基础架构部副总裁Eric Brewer也附和道:“容器技术曾是Google的基础,我们和Docke联手,把容器技术打造为所有云应用的基石”。
Google自2004年就开始使用容器技术,目前他们每周要启动超过20亿个容器,每秒钟新启动的容器都超过3000个,在容器技术方面有大量的积累。曾相继开源了Cgroup和Imctfy先进之处融入Docker中,还把自己的容器管理系统(kubernetes)也开源出来。
2014年8月,不缺钱的Docker再次融资,融资超过4千万美元,估值达到4亿美元。所有的云计算大公司,如Azure、Google和亚马逊等都在支持Docker技术,这实际上也让Docker成为云计算领域的一大重要组成部分。
2014年10月15日,Azure副总裁Jason Zander宣布微软与Docker的合作伙伴关系;2014年11月5日,Google发布支持Docker的产品DockerGoogle Container Engine;
2014年11月13日,Amazon发布支持Docker的产品AWS Container Service。至此,几个重要的云计算大公司都已经支持Docker技术,这不仅让Docker成为云计算领域的一个重要级成员,也让Docker成为云应用部署的事实上的标准。
2014年12月,Docker发布了Docker集群管理工具Machine和Swarm,标志着Docker开始突破一个标准的容器框架,打造属于Docker自己的集群平台和生态圈。
2015年4月,Docker公司宣布完成了9500万美元的D轮融资。
2015年10月,Docker收购Tutum,Tutum本身已经实现对亚马逊网络服务(AWS)、Digital Ocean、微软的Azure等主流云服务商的良好支持。
2016年1月,Docker官方计划全面支持自身的Apline Linux,使用它构建的基础镜像最小只有5M。
虚拟机技术缺点:
容器化技术不是模拟一个完整的操作系统
比较Docker和虚拟机技术的不同:
传统:一堆帮助文档,安装程序
Docker:打包镜像发布测试,一键运行
使用了Docker之后,我们部署应用就和搭积木一样!
项目打包为一个镜像,更好扩展
在容器化之后,我们的开发,测试环境都是高度一致的
Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例