很早就想写一篇关于Docker的文章了,但却久久未动笔,直到最近社区再无Docker了,在2017年4月17日的DockerCon17上,开源项目Docker变更为Moby,好吗,膜拜单车了,开始动笔....
提到容器大家会很快想到Docker, 然而容器技术并非新鲜事物,虚拟机, VM已诞生多年,而真正大面积使用,普及则是近几年借着云计算及PaaS趋势而火。
本文将主要简单入门介绍Docker为主, 适合入门级别,请Docker高手直接【点赞转发】即可。
目录
Docker介绍
Docker之父
应用场景
系统架构
基本概念
核心技术
DevOps流程革新
Kubernetes
总结
1
Docker 介绍
比较喜欢Docker老版本官网的经典又直白的介绍及其Slogan:
"Docker - Build, Ship, and Run Any App, Anywhere"。
Docker是一个开源的引擎,可以为任何应用创建一个轻量级的,可以移植的,自给自足的容器。

Docker宣称,开发人员可以在笔记本上编译,测试,打包其应用及依赖到可移植容器中,然后批量发布到任意服务器,并在生产环境中部署,包括VMs, OpenStack集群等其他基础应用平台。
而容器是完全的沙箱机制,相互之间不会有任何接口,有点类似iOS中的独立Apps。
2
Docker创办简史
老传统,简单介绍一下Docker的由来及主要创始人。

大概7年前,2010年,上图的年轻人28岁的Solomon Hykes加入当年炙手可热的PaaS服务队伍,在旧金山成立主攻PaaS的公司,起名dotCloud。PaaS主要定位为为软件开发提供相关的配套设施,包括语言环境,运行环境,存储等基础服务,其中涉及多种框架,语言,如PHP, MySQL, Node.js, MongoDB等等,PaaS通常提供构建服务SDK,并实现云端自动部署与测试。
当dotCloud把基于Linux Container(LXC),用Go开发的的PaaS平台做到极致的时候,理论上dotCloud已经摆脱环境限制,善于洞察的Solomon发现其基于LXC的技术具有快速,高效协作开发与部署的捷径,在当时PaaS激烈竞争环境下,dotCloud为了苟且偷生,不得已决定开源核心引擎(Apache2.0协议),不料柳暗花明,激起千层浪, 而其公开的核心引擎,名字叫Docker。
dotCloud看到社区及众多PaaS大佬(Amazon, Google, IBM, MS, RedHat, VMware)对Docker的追捧及认可,顺势而为,直接于2013年公司更名为Docker发布Docker 0.1版本,并于2014年把docCloud的PaaS服务平台出售,至此拉开了基于云计算平台的发布产品变革序幕。
Docker除了本身技术的创新之处,其实在推广运营上也做了很多文章,依托于GitHub, 大力推广社区文化,Meetup,
看一张早期2014年的GitHub的统计数据吧:

在2014年发布1.0版本时,通过其用心经营社区,其15个多月期间已经超过460位贡献者参与,可见开源社区,GitHub的威力,以及幕后的广告运营能力。
再来看一下至今的Pull Chart数据吧:

数据在说话,Docker的成功起源于开源,发展于社区。
3
Docker的应用场景
云计算时代的配置管理
云计算时代的到来,极大程度上整合了硬件网络资源,开发于云端,如成功模版AWS,然而其相应大规模,分布式软件配置及管理则带来相当的复杂度,Docer则借鉴传统的虚拟及镜像机制,提供artifact集装箱能力,从而助力云计算,尤其是类似于提供了Web, Hadoop集