1.Docker简介

一、PaaS平台


1.PaaS平台概述

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

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

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

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

2.PaaS平台的局限性

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

 

3.Docker

可以理解为新一代的PaaS平台,Docker也被称为第三代Paas平台。

 

二、项目环境问题


 在我们开发一个产品过程中,一般都经历这么几个过程:

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

在这个流程中,不同的环境部署对于项目本身的正常运行风险是未知的:

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

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

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

 

三、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的"吉祥物",更生动的说明其类似集装箱的功能:

 

posted @ 2018-04-20 22:28  飘飘来来荡荡去去  阅读(285)  评论(0编辑  收藏  举报