在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理;或者是没用过,但听过它的大名;也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟。作为一名技术人员,只要你在这个软件行业里摸爬滚打,就一定对他有不同程度的了解。

Docker是什么?

Docker的LOGO十分有特点,一条鲸鱼载着很多集装箱,集装箱中满是要交付的货物。鲸鱼就是操作系统,而集装箱就是Docker,集装箱中的就是要交付的货物,也就是应用程序。各种"货物"之间的尺寸、大小、形状是各不相同的,都要放到鲸鱼身上,那么就要考虑各种货物怎么安放,还得考虑货物之间能否重叠起来。于是就有了集装箱的概念,将每件货物都放到集装箱中,这样鲸鱼就可以有顺序的安放,省时省力。

那么就可以理解为:打包好的软件放到容器中,容器再放到操作系统中,就是简单的"build——ship——run",这样就可以保证在自己电脑上怎么运行,在服务器上也是怎么运行,大大减少因为环境原因出错而导致程序运行错误,开发需要花费大量的精力去折腾环境。

Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,将镜像打包后上传到仓库,就可以发布应用到任意平台中。在使用时,只用一条命令就可以将镜像拉取到本地,然后一条命令就可以快速的将项目部署起来。这也完美的诠释了Docker的三大核心:镜像,容器,仓库。

那么,首先我们要来了解一下 Docker 的优势:

1.快

运行时的性能可以获取极大提升(经典的案例是提升97%)。

管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的。

  1. 敏捷

像虚拟机一样敏捷,成本更低,部署方式简单。

  1. 灵活

将应用和系统"容器化",不添加额外的操作系统。

  1. 轻量

你会拥有足够的"操作系统",仅需添加或减小镜像即可。在一台服务器上可以布署100~1000个Containers容器。

5.便宜

开源的,免费的,低成本的。由现代Linux内核支持并驱动。注* 轻量的Container必定可以在一个物理机上开启更多"容器",注定比VMs要便宜。

  1. 云支持

云服务提供创建和管理Linux容器框架。

在之前的文章,我们也系统地介绍过Docker,感兴趣的同学可以戳:

第一章:Docker与k8s的恩怨情仇(一)—成为PaaS前浪的Cloud Foundry

第二章:Docker与k8s的恩怨情仇(二)—用最简单的技术实现"容器"

第三章:Docker与k8s的恩怨情仇(三)—后浪Docker来势汹汹

第四章:Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕

第五章:Docker与k8s的恩怨情仇(五)——Kubernetes的创新

第六章:Docker与k8s的恩怨情仇(六)—— "容器编排"上演"终结者"大片

第七章:Docker与k8s的恩怨情仇(七)—— "服务发现"大法让你的内外交互原地起飞

第八章:Docker与k8s的恩怨情仇(八)——蓦然回首总览Kubernetes

Docker应用部署BI数据分析

通过上面一系列的介绍,我们可以从发展背景到具体原理和使用了解Docker。接下来我们将从BI数据分析应用为例,为大家介绍如何实现Docker应用程序部署。

首先我们从BI数据可视化分析说起。通过对目前国内市面上多个BI应用进行调研后发现这些应用都存在一些问题。

  1. 依赖于运行环境 JDK,JAR,.NET Core等,若运行环境不一致也会导致各种问题出现。
  2. 安装复杂。对于非专业人员,部署一套系统需要投入很大精力。
  3. 过于依赖于操作系统。例如会存在x32位不可支持,win7环境配置难度大,winserver2008以前版本不支持等各种系统问题。
  4. PC安装有各类应用软件,容易和已安装软件冲突,引发不可预知的异常问题。
  5. PC安装各种杀毒软件,如360、金山毒霸、电脑管家等一些杀毒软件,会将进程杀掉,引起一些BI服务无法正常运行。
  6. BI产品普遍有很多运行计划任务,个人PC安装BI应用后,即使不打开软件,程序依然在跑,容易引起PC运行比较卡顿。

上述问题的存在,就让 Docker 可以很好凸显他的价值。

首先Docker中的容器是与其他容器相互隔离的,在所获取的镜像中包含了Docker运行所需要的全部依赖的运行环境;所以只需要简单两行代码,就可以安装一个完整的BI应用。我们以Wyn Enterprise的部署为例,给大家演示下Docker进行软件部署的具体过程。

示例步骤:

  1. 安装Docker
  2. 获取镜像:

sudo docker pull grapecitycn/wyn-enterprise
  1. 创建并运行docker容器:

sudo docker run --name wyn -p 51980:51980 -d grapecitycn/wyn-enterprise
  1. 至此,我们就可以通过 http://{server_ip_address}:51980 来访问Wyn

通过以上示例,我们可以看到,仅需简单的3个命令行,就快速完成了BI系统的部署。请问,还有什么比Docker更简单快捷的部署方式吗?

Docker镜像打包

部署如此简单,那么如果要进行移植该如何做,集成的项目如何发布Docker仓库中呢?

接下来,我们通过一个案例系统的解镜像打包过程,为大家解答这两个问题。

事情的起因是客户找到葡萄,表示希望将BI软件打包到自己应用系统中,在实现OEM白标处理后,做一些个性化配置后,重新打包镜像,上传到Docker仓库中。

说做就做,咱们现在就开始项目。

  1. 首先,使用 Wyn Enterprise 提供的 Docker 镜像来创建一个自己的 Docker 容器

sudo docker pull grapecitycn/wyn-enterprise sudo docker run --name wyn -p 51980:51980 -d grapecitycn/wyn-enterprise

通过:http://{server_ip_address}:51980进行个性化操作配置。

  1. 按自己的要求进行系统配置

可以根据自己的需要来对系统进行配置,比如替换登录页面的背景图片和LOGO,系统左上角显示的LOGO,以及替换浏览器tag页上面显示的LOGO;还可以根据自己的需要创建一些示例文档。

  1. 用 admin 登录到系统后,导出你需要的文档以及配置。
  2. 制作 Docker 镜像

    4.1. 准备一台Linux机器,把文件夹custom-wyn拷贝到这台机器上面去;

    4.2. 把步骤3中导出的压缩文件重命名为sample_files.zip,并拷贝到目录custom-wyn/sample_files;

    4.3. 如果需要在自定义的Docker镜像中内置字体,请把准备好的字体文件拷贝到目录custom-wyn/custom_fonts下;

    4.4. 根据自己的需要,修改dockerfile文件中docker镜像wyn-enterprise的tag名称;

    4.5. 参照脚本文件push-docker-image.sh中的内容,制作并且上传Docker镜像到Docker仓库中。

    4.6. 打包资源

从该地址下载即可:

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=139206

4.7. 拉取Docker镜像进行验证

拉取上面步骤中创建好的Docker镜像,并使用该镜像创建一个docker容器。

访问该docker容器中运行的Wyn Enterprise应用并进行验证。

至此我们的Docker镜像都已经制作完成。

总结

这里我们系统为大家介绍了Docker应用的优势,以及整个BI项目在docker中部署的全过程。其中Docker镜像打包也是目前很多企业中比较喜欢的一个功能,通过简单的操作BI集成到自己的应用系统中一起打包,完美的解决了嵌入融合的问题。

目前越来越多开发者已经投入到Docker的队伍中,同时随着技术更新迭代,BI也在不断进步,现在WynEnterprise已经支持K8S集群部署。接下来,将持续为大家分享数据集成,数据分析,集群部署等内容。

BI系统打包Docker镜像及容器化部署的具体实现的更多相关文章

  1. Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署

    使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...

  2. BI系统打包Docker镜像及部署的技术难度和实现

    BI系统打包Docker镜像及部署的技术难度和实现 随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用:传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置n ...

  3. Docker容器化【Docker镜像与容器相关命令】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  4. 将spring cloud打包docker镜像

    简介:用spring cloud构建微服务后,微服务肯定要docker镜像化然后用rancher等可视化工具管理,这就是走完了一套基本的流程,现在简单介绍下 环境:两台centos7.x的服务器,一台 ...

  5. docker镜像与容器

    目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...

  6. docker镜像和容器的导出导入

    本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...

  7. 【Docker】(5)---springCloud注册中心打包Docker镜像

    [Docker](5)---springCloud注册中心打包Docker镜像 上一篇文章讲了将镜像推送到远处私有仓库,然后再从私有仓库拉取该镜像的过程.而这里的镜像是直接从Docker拉取的. 所以 ...

  8. Ubuntu系统下容器化部署gitlab

    容器化部署gitlab 获取镜像文件 1. 下载镜像文件 docker pull beginor/gitlab-ce:-ce. 2. 创建GitLab 的配置 (etc) . 日志 (log) .数据 ...

  9. Docker镜像和容器

    本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...

随机推荐

  1. Spring Boot 自定义Starter 可能引发的问题(Error)

    如果你的项目出现: Consider defining a bean of type 'com.wy.helloworld_spring_boot_starter.PersonService' in ...

  2. Mybatis——动态sql+字符串匹配导致的判断问题

    在mybatis的学习中,狂神建议字符串匹配直接将模糊匹配的符号放在字符串中,如:匹配'keWord',那么实际所使用的参数应该为'%keyWord%' map.put("keyWord&q ...

  3. IC设计基础

    一 前言 这一周连续两场线下面试,紧接着又是微信视频面试,从连续三天的面试中,收获颇丰! 存在的问题: 一是对项目细节模糊: 二是IC基础知识薄弱: 具体表现是,在面试过程中,如被问到DDR3和千兆以 ...

  4. ESP8266 NodeMCU引脚说明,CH340和CP2102两款

    开发ESP8266 NodeMCU GPIO功能时,虽然知道ESP8266 NodeMCU丝印引脚编号如下图所示(CP2102款),但是和实际对应的GPIO编号完全不一样.   CP2102款 引脚说 ...

  5. 生产环境频繁内存溢出,原来就是因为这个“String类”

    摘要:如果在程序中创建了比较大的对象,并且我们基于这个大对象生成了一些其他的信息,此时,一定要释放和这个大对象的引用关系,否则,就会埋下内存溢出的隐患. 本文分享自华为云社区<[高并发]你敢信? ...

  6. 二、mycat15种分片规则

    一.分片枚举 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则,配置如下: <tab ...

  7. thrift源码分析

    1 前言 学习thrift源码主要为了弄清楚几个问题 thrift客户端和服务端的通信流程是如何的 thrift的IDL中给属性加上编号的作用是什么 thrift中require.optional和默 ...

  8. memcached 如何处理容错的?

    不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理.如 果发生了节点失效,应对的措施完全取决于用户.节点失效时,下面列出几种方 案供您选择: 忽略它! 在失效节点被恢复或替 ...

  9. spring-boot-learning-配置文件相关

      Spring-boot的配置文件   springboot通过那个下面的依赖去读取配置文件的上下文: <!-- https://mvnrepository.com/artifact/org. ...

  10. 学习ELK日志平台(四)

    一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...