• 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的"吉祥物",更生动的说明其类似集装箱的功能:
  • 相关阅读:
    struts2文件上传下载
    struts2自定义拦截器
    JSP_Servlet 解决中文乱码登录问题
    ajax提交form表单
    sql语句大全
    spring
    struts2
    jsp_servlet
    jsp_servlet2
    数据库
  • 原文地址:https://www.cnblogs.com/Json1208/p/8893918.html
Copyright © 2020-2023  润新知