1.Docker简介

1、PaaS平台前端


1.PaaS平台概述linux

PaaS,即platform as service,翻译为:平台即服务。docker

PaaS是一种云服务,它提供了应用程序的开发和运行环境,借助于PaaS服务,你无须过多的考虑底层硬件,并能够方便的使用不少在构建应用时的必要服务,好比安全认证等。数据库

PaaS 旨在支持 Web 应用程序的完整生命周期:生成、测试、部署、管理和更新。安全

PaaS 让你无需购买和管理软件许可证、应用程序基础结构和中间件或开发工具和其余资源,从而避免了开支和复杂操做。你管理本身开发的应用程序和服务,剩余事项通常由云服务提供商负责。并发

2.PaaS平台的局限性负载均衡

  • 主要提供应用的部署和托管;
  • 支持单种开发语言和框架;
  • 支持特定的服务,好比只支持某种队列等;
  • 没有很好的解决经常使用中间件的部署问题;
  • 难以解决应用和资源的隔离问题

 

3.Docker框架

能够理解为新一代的PaaS平台,Docker也被称为第三代Paas平台。分布式

 

2、项目环境问题工具


 在咱们开发一个产品过程当中,通常都经历这么几个过程:

首先,产品定位,收集并肯定需求;其次,产品专员制做原型界面;紧接着,研发人员根据原型需求进行技术选型以及环境搭建;最后,测试经过部署上线。

在这个流程中,不一样的环境部署对于项目自己的正常运行风险是未知的:

  • 好比,咱们常常听到的一句话是:在我本机调试是正常的啊 ! 
  • 再如,Java开发上传文件功能,在本地开发时,使用的是window系统,而部署到测试环境时是linux系统,因此本地上传文件路径的间隔符能够是//,而在linux中执行时变成了/,会致使上传路径找不到报错,为了兼容运行环境咱们只能将上传路径修改成:System.getProperty("file.separator") 
  • 还有,测试环境部署成功并测试经过,但将代码合并到正式版本并发布后,发现前端调用接口出现大量超时,经排查是由于生产环境系统时间为UTC时间,跟本地相差8个小时,那么又得来调整时间;

以上的简单例子无不体现不一样的环境,执行相同的代码,产生的结果迥然不一样,这就是环境带来的未知风险 !

除了环境不一样带来的未知风险,咱们还可能碰到为不一样的人配置相同的开发或测试环境等等,想一想就很是的烦 !!!

 

3、docker


 1.什么是docker

引自知乎上的解释:https://www.zhihu.com/question/28300645/answer/320388231

顾名思义,Docker为集装箱,Docker在实际应用中亦起集装箱之用——将开发、运行环境打包,方便开发环境布置以及运行环境部署,能够较好地减小环境部署的时间,并且在电脑上每一个Docker容器能够工做而互不影响。

与传统方式相比,它有如下优势:

①、开盒即用

Docker其实就像一份外卖,你拿来就能够直接食用,不须要特别的加工,能够节省大量的时间,而实际上这也是环境部署问题,传统的常看法决方案还为VM(Virtual machine,虚拟机)。

②、运行效率高

和其余解决方案相比,Docker像穿着薄手套吃炸鸡,其余则是像穿着厚手套吃炸鸡。虽然能达到同样的效果,可是却能更为方便快捷。

VM有着一个较为致命的缺点,那就是虚拟机须要将系统内核进行虚拟,每每须要消耗大量的资源。而在Docker中则相反,你能想象树莓派2上能运行2499个Docker容器吗?

不过安全性问题的确存在,在目前状况下,亚马逊(没记错吧)的解决方案是每一个虚拟机中单独运行一个Docker,以保证环境安全性。

③、环境独立

这儿又能够拿集装箱类比了,在集装箱里,每一个箱子能够放的东西相互独立,互不影响。就算你装一箱子毛线和一箱子猫,猫也弄不乱另外一个箱子的毛线。

如同VM,在同一台计算机中,能够运行多个Docker,它们互不影响,独立工做。

④、可二次开发

就和大多数饭店都是买东西来加工同样,使用Docker可让你拿别人作的半成品进一步加工,进而得出你须要成品。固然,你的成品也能够本身使用,或交由他人进一步加工。

在Docker中,每一个人均可以将别人作好的image(镜像,只读)拿来进一步配置,进而获得本身所须要的环境(Docker官网上也会提供不少image的),也能够将本身配置好的环境封装成image发布交由他人使用。

⑤、可快速配置

如同各类傻瓜相机,稍微调节就可一键操做,省时省力(虽然傻瓜相机效果没那么好,但在Docker中并不会影响实际效果)。

经过Dockerfile能够快速生成所需环境,配置极其方便。

⑥、自带分布式集群管理

一个专业知识再强的工程师,在实际建筑时效率也比不上一群民工(并无贬低之意)。

自带分布式集群能够经过分布式计算提升总的运算能力,亦可用于负载均衡。   

 
2.Docker的应用场景
  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其余的后台应用。
  • 从头编译或者扩展示有的OpenShift或Cloud Foundry平台来搭建本身的PaaS环境。
 
3.Docker的"吉祥物"
每一个开源项目的背后,都有一个默默让人记住的"吉祥物",而Docker的"吉祥物",更生动的说明其相似集装箱的功能: