1、背景
从产品的开发、测试、、配置到部署,开发人员和运维人员在协作过程中往往要关心很多。即便如此,仍然存在因开发、生产环境配置差异得到问题而导致的软件部署后运行异常的问题; 应用移植麻烦:可能你在linux上搭好了一套环境,但因需求需移植到window环境上,那你将不得不重新进行环境配置; 对于分布式系统部署时,往往需要重复性的配置多台功能性相同的服务器,但仍然有参数、配置信息存在差异的情况。 。。。 Docker应运而生, 通过Docker将原始开发中的软件和环境配置打包复制安装的策略,来消除协作编码时“在我的机器上可以正常工作”的问题 Docker打破了过去的“程序即应用”的观念,通过镜像将作业系统核心除外,运作应用程序所需要的系统环境,由上至下打包,达到应用程序跨平台式运作,类似于java:一次构建,到处运行。 ![](https://img2018.cnblogs.com/blog/1659331/201905/1659331-20190520200042895-903321862.png)2、Docker概念
Docker是PAAS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵循Apache2.0协议开源。
将应用运行在Docker容器上,而Docker容器在任何操作系统上运行都是一致的,从而实现跨平台、跨服务器的应用运行。
Docker是一款用于解决运行环境和配置问题的软件,便于做持续集成并有助于整体发布的容器虚拟化技术。
说明:
云计算:可以让开发人员和 IT 部门可以全身心投入最有价值的工作,避免采购、维护、容量规划等无价值的工作分散精力。目前云计算已经拥有了几种不同的模型和部署策略,以满足不同用户的特定需求。每种类型的云服务和部署方法都提供了不同级别的控制力、灵活性和管理功能。
云计算的模型主要有三种:基础设施即服务、平台即服务和软件即服务,每种模型代表着云计算堆栈的一个独特部分。
基础设施即服务 (IaaS):
基础设施即服务包含云 IT 的基本构建块,通常提供对联网功能、计算机(虚拟或专用硬件)以及数据存储空间的访问。基础设施即服务提供最高等级的灵活性和对 IT 资源的管理控制。
平台即服务 (PaaS):
平台即服务把应用服务的运行和开发环境作为一种服务提供的商业模式。平台即服务消除了组织对底层基础设施(一般是硬件和操作系统)的管理需要,让开发人员将更多精力放在应用程序的部署和管理上面,不用操心资源购置、容量规划、软件维护、补丁安装或与应用程序运行有关的任何无差别的繁重工作。
软件即服务 (SaaS):
软件即服务提供了一种完善的产品,其运行和管理皆由服务提供商负责。人们通常所说的软件即服务指的是终端用户应用程序。使用 SaaS 产品时,服务的维护和底层基础设施的管理都不需购买者操心,购买者只需要考虑怎样使用 SaaS 软件。SaaS 的常见应用是基于 Web 的电子邮件,在这种应用场景中,购买者可以收发电子邮件而不用管理电子邮件产品的功能添加,也不需要维护电子邮件程序运行所在的服务器和操作系统。
传统应用构建方式与云计算:
Docker被称为第三代PAAS产品。
LXC技术
即Linux Container 是一种内核虚拟化技术,可提供轻量级的虚拟化,用于隔离进程和资源。
docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境, 同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合, 并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。
3、Docker与传统虚拟化对比
左边:完全虚拟化(虚拟一完整操作系统)、寄居架构,内核级别隔离,硬件资源消耗多,启动分钟级; 右边:容器虚拟化(容器内无内核且未进行硬件虚拟),隔离性差,硬件资源消耗少,启动秒级。