数据运营 | 快速部署数据应用

使用docker 快速部署数据应用


作者:阿乐


今日阳光明媚,宜写字。


阿乐最近在忙一个项目,需要爬数据,做分析,出报告,折腾的有点累,后面有时间可以跟大家分享一下,但是还是要坚持写这个数据运营与数据赋能系列文章。


前面阿乐介绍了数据人构建数据平台的思路、步骤,写应用的工具、方法等等,虽然不是事事具细,但是大致框架、轮子都已经交代清楚。后续遗漏的地方有时间再一一补上。


今天阿乐讲讲部署应用的绝佳工具--docker


 0  什么是docker?


Docker并不是什么刚兴起的技术,只是常见的应用场景都是在开发、运维,但是这么好的技术和作用一样对我们数据人有好处。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

百度

上面就是百度对docker的官方定义,说白了,docker就是容器工具。


理解docker之前,我们先说下虚拟机。


虚拟机,隔离环境中的完整计算机系统。虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完整的计算机系统。 


我们有些人可能会使用虚拟机的习惯,例如我的电脑是win7系统,但是我有个工具只能在Ubuntu系统下,所以我需要一个Linux系统,但是我只有一台电脑,这时我就可以安装虚拟机,然后再开一个Linux系统,这样就满足我的需求。


打个比方,你的电脑是一栋楼,虚拟机的出现就是把你的楼分层。 你的可以把你的大楼按你想要的方式去利用,但是虚拟机的一个缺点就是启动慢占用资源多等等,开虚拟机之后本地运行都很慢很卡,就是资源被占用。


为了方便理解docker,你可以把docker理解成轻量级的虚拟机技术。docker是容器化技术,是更深入的虚拟化技术。


docker的logo是一个鲸鱼托着一个集装箱,这意味和它的作用是不谋而合的。


Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。这就是docker的功能和作用,同时实现这些功能,docker花费了最少的资源。


 0  docker的好处?


前面提到docker在开发、运维用的多,那是他的特点十分符合开发、运维场景。


一个常见的场景是,不同的开发人员或者项目组开发了一个应用,是基于Ubuntu及配套的环境开发的,但是运维人员是却是使用centos,同时不同的环境依赖、软件也不一样。


有了docker就十分的方便了,开发人员只要前面提交相应的dockerfile脚本即可,运维就可以一键部署,省时省力,同时docker隔离性高,资源利用率高部署更新方便,运维省心。


还是拿上面的比方,docker能把你这栋楼分成标准单间,资源利用率大大起来了,同时隔离性好,互不影响,这个房间跟那个房间没有关系。


因此,docker有以下三点好处:

  • 简化程序:
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。



  • 避免选择恐惧症:
    如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

  • 节省开支:
    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。


  • 常见的应用场景:

  • Web 应用的自动化打包和发布

  • 自动化测试和持续集成、发布

  • 在服务型环境中部署和调整数据库或其他的后台应用

  •  0  我们怎么用docker?


    要使用docker,就要学会怎么用docker。这个不是今天讲的重点,学习docker推荐大家去看菜鸟教程里面的docker教程,不过阿乐提一句,对于学习程度,我们了解docker的作用,学会怎么使用安装docker,怎么生成我们的实例就足够了。


    我们可以使用docker来部署我们之前写好的应用,可以使用docker来做我们的工具服务等等。结合业务中实际的需求,应用这个工具和技术解决我们一些问题。


    为什么阿乐极力推荐使用docker来部署我们的应用,因为阿乐也走过了不少坑,兜兜转转才认定了这个技术,希望这篇文章能给大家一个参考。


    下面是生成一个shiny应用的容器案例,其实就是写一个dockerfile文件,通过这个文件我们就能生成我们的应用案例。

    # 拉取基础源镜像FROM openanalytics/r-base# 镜像标签MAINTAINER lizhi "[email protected]"# 安装系统依赖RUN apt-get update && apt-get install -y \    sudo \    pandoc \    pandoc-citeproc \    libcurl4-gnutls-dev \    libcairo2-dev \    libxt-dev \    libssl-dev \    libssh2-1-dev \    libssl1.0.0 \  libmpfr-dev
    # 安装R包RUN R -e "install.packages(c('shiny','shinydashboard','shinydashboardPlus','leaflet','shinyWidgets'), repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')"# 复制程序脚本到指定路径RUN mkdir /root/eulerCOPY euler /root/eulerCOPY Rprofile.site /usr/lib/R/etc/EXPOSE 3838# 运行命令CMD ["R", "-e", "shiny::runApp('/root/euler')"]


    从代码上看,其实就是跟我们在Ubuntu系统上安装R并运行一个shiny程序过程差不多,这里把过程代码化了,这就是docker便捷之处。


    如果大家工作有需要,可以去了解这个技术,但不需要深入掌握,知道基本操作即可,因为我们需要用,不需要太懂。


     0  写在结尾

    在此向大家征集数据故事,你的人生也许有你很中意的人和事,我希望用精确的数字和可视化映射平凡人的美好故事。期待您的私信!


    感谢您的耐心阅读,请顺手点个「在看」,谢谢。

    为了更好的体验,你可以我们的公众号

    『 延伸阅读 』

    技术

  • 有意思 | 七夕用代码地写封优雅的情书

  • 上新 | 数据分析师用什么姿势学?

  • 技术公司怎么用R和shiny赋能业务?

  • 数据运营 | 数据平台实践流程


  • 生活

  • 精选 | 四面楚喵

  • 你可能感兴趣的:(数据运营 | 快速部署数据应用)