阅读更多

0顶
0踩

编程语言

转载新闻 五个基于Java的Docker镜像

2015-10-08 11:38 by 副主编 mengyidan1988 评论(1) 有8174人浏览
【编者的话】Java 语言长期占据编程语言前三甲的位置,其受欢迎程度与重要性不言而喻。在容器化技术大潮中,Java 可扬容器化之长,避自身“臃肿”之短,取得更高成就。本文选择了5个有代表性的 Java 镜像进行了介绍,并指出了其现存的一些问题和解决方案,供相关人员参考。

尽管 Java 看起来不是很“时髦”,但仍是一门在移动市场、开源界及企业中占据主导地位的非常受欢迎的重要的语言。举个例子,你可知道在 Apache 软件基金会中63%的项目是用 Java 写的么?

幸运的是,在容器技术发展进程中,Java开发人员并未被冷落。本文将着重介绍五个(译注:原文误写为“四个”)流行的基于Java的Docker镜像与配置,以及他们如何能帮助你的团队更有效地工作。

STASH

Stash 是个 Git 代码管理和协作工具。Stash 允许将部署节点集群化,从而减少活动主机的停机时间,且不会对每个添加的节点造成性能影响。Stash 还集成了 JIRA(同一公司出品)的可追溯能力,并为团队提供协作工具,具有类似这样的功能:当一个 pull 请求处于打开状态时,代码被修改将触发警报。

细节

如果你想将 Git 远程主机从一个 Stash 实例迁移到另一个 Stash 实例,请注意虽然可以把仓库复制过去, pull 请求却是无法被复制过去的。你也不能在实例间迁移。不过,Stash 的开发团队会在将来添加这些功能

在生成 JIRA 数据库结构时,请注意JIRA 6.1 EAP 3包含了重大修改,可能会造成插件停止工作。

Stash 可以限制对重要代码分支的写权限,防止新成员误操作。Stash 允许开发人员将代码提交到自己的服务器端仓库上,然后由项目管理者审核并合并到主项目仓库中。

在Stash中开始一个新项目时,项目管理者应从一个全新的仓库入手:
ssh user@host
git init --bare /path/to/repo.git 

所有其他成员需要通过 SSH 进入这个仓库,并将其复制到服务器的另一个地方。Stash 称之为“分流流程”(Forking Workflow),这对于来自 SVN 背景的人有点不同寻常。
TOMCAT

Tomcat是个实现了 Oracle 的 Java Servlet 及 JSP 规范的开源 Web 服务器及 Servlet 容器。它提供了一个标准的 HTTP 环境用于运行代码。在最简配置时,Tomcat 运行于单一的系统进程中。在旧机器上工作的开发人员通过容器安装 Tomcat 将不需要完整的虚拟机环境,从而腾出资源。
细节

对运行 Linux 虚拟机的用户而言,在 Docker 容器中运行 Tomcat 的性能可能会非常差,容器的启动速度很慢或非常卡。

如果宿主系统是 Linux,可以使用熵收集守护进程(Entropy Gathering Daemon,简称EDG)来解决这个问题。如果是使用 Boot2Docker,由于 Boot2Docker 的 Tiny Core Linux 扩展中没有 EGD,这个问题将尤为突出。将宿主的 /dev/urandom 装载成容器的 /dev/random 可作为临时解决方法

如果在Docker中运行Tomcat时,虚拟机也在经历低熵,VirtualBox提供了一些方案来提高虚拟机的熵。

APACHE HADOOP

Apache Hadoop是个用于将大数据集分布到大量计算机中的开源框架。Hadoop 被设计成可以从一台主机扩展到数万台。Hadoop 不依赖硬件来达成容错,可在应用层面处理失败。Hadoop 框架由四个模块组成:Hadoop Common、Hadoop 分布式文件系统(HDFS)、Hadoop YARN 及 Hadoop MapReduce。此外,还有一些 Hadoop 相关的项目,包括ZooKeeperSpark
细节

如果你试图创建多节点集群用于在Docker中运行Hadoop,你可能会碰到一些麻烦。容器间网络可通过Weave或SequenceIQ的新项目Cloudbreak 来构建。Cloudbreak 可以很容易地在不同的云供应商(比如 AWS)上创建 Hadoop 集群。

用户还遇到过在Hadoop中运行pyspark(Python 中使用的一个Spark编程模型)的困难。尝试以非 root 用户保存数据帧(dataframe)会失败。重置 $SPARK_USER 为 root 也无事于补,因为 spark 子节点都是作为 root 运行的。如果你的项目不需要权限系统,可使用用户邮件列表的这个方式来解决。

MAVEN

Apache Maven是个围绕“项目对象模型”(Project Object Model,简称 POM)概念的软件项目管理工具。Maven 据此从一个中央信息源来管理项目的构建、文档或报告。Maven 还提供了开发期工具,提供项目的邮件列表、代码控制器的变更日志、依赖列表或单元测试报告。
细节

在运行 Maven 的 Docker 插件时,有个错误:如果用户没有指定命令,一个空的 CMD 会被输出。对于那些想让容器继承父容器的信息的用户而言,会很受挫。使用官方 Docker 镜像可缓解这些问题。

如果你的服务器运行着 Jenkins,用于创建发布版或快照的设置选项在处理 mvn 命令的 Docker 参数时很快会变成一个麻烦。Jenkins 的 Maven发布插件会自动配置 pom.xml 并部署快照。

GLASSFISH

Glassfish 是个开源应用服务器,支持 EJB、JPA、JSF、JMI、JSP 等等。Glassfish 让开发人员能够创建可扩展、可移植并可与传统技术整合的应用。用户可以安装附加组件以访问其他服务。

Glassfish 在 Docker Hub 中为想尝试新功能的开发人员提供了两个额外镜像:Nightly和Ozark。Ozark 包含了运行 Glassfight 4.1 的 MVC 1.0,用于支持 Java EE 8。
细节

GlassFish 目前存在一个涉及域受损的问题。如果用户删除 glassfish/domain/domains 目录就会出错。试图这么做后,文件会像被锁定了一样无法被删除,即便是在容器中重新安装一份全新的 GlassFish 4.1 也无济于事。已经有些解决这一问题的方案被公布出来。最常见的是Github上这一问题的解决方法:将无法被删除的结构上移一层,然后删除它。
结语

本文中,我们介绍了这五个镜像:
  • Stash 为开发团队提供了代码管理、对等审核以及流线型工作流来管理 Git 仓库。
  • Tomcat 提供了一个轻量的 HTTP 环境来编译代码,节约了运行多个虚拟机实例所需的系统资源。
  • Hadoop 是一个很容易在应用的所有实例中分布处理大量数据的框架。
  • Maven 通过自动化处理应用的所有实例来管理项目构建过程。
  • Glassfish 允许开发人员使用 Java EE,并与传统应用整合。

这些是Docker Hub 上Java应用和DevOps工具的很好示例,你可将其与Docker联合来提升工作流程、项目管道以及项目的可扩展性。

原文链接:Ready-made Java-based Containers, Part One(翻译:梁晓勇

译文来自:DockerOne
来自: DockerOne
0
0
评论 共 1 条 请登录后发表评论
1 楼 fourfireliu 2015-10-09 14:07
test123

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • docker-oracle-java8:使用 Java8 的 Docker 镜像

    docker-oracle-java8 基于 Ubuntu 14.04 的 Java8 最小 Docker 镜像通过 WebUpd8 存储库,灵感来自 @akisei 和 @makuk66

  • elastic buffer

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 在高速、串行、源同步的数据传输协议中,用elastic buffer实现本地时钟和恢复时钟之间的数据同步是比较常见的一种办法。其关键在于利用elastic b

  • PCIe扫盲——弹性缓存(Elastic Buffer/ CTC Buffer)

    转载地址:http://blog.chinaaet.com/justlxy/p/5100057990 前面在介绍PCIe物理层逻辑子层的文章中,有提到过弹性缓存(Elastic Buffer,又称为CTC Buffer或者Synchronization Buffer)。其本质上是一种FIFO,主要用于解决跨时钟域问题。当然,PCIe的弹性缓存还用于补偿时钟误差(Compensate for th...

  • 傅里叶变换音频可视化_如何过滤FFT数据(音频可视化)?

    If you look at the demo, the fft peaks fall smoothly. I'm trying to do same with Processing in Java mode using the minim library. I've looked at how this is done with the web audio api in the doFFTAna...

  • java学习第18步——Docker镜像

    docker管理镜像,在docker软件中执行镜像可以实现不同软件...学习Docker掌握6个内容:1制作镜像 2 管理镜像 3 管理容器 4管理数据卷 5操作远程和私有仓库 6使用DockerCompose进行集群部署,这个比较难,可以先不用学。

  • Dockerfile制作基于Ubuntu的java应用镜像

    基于Ubuntu18镜像,打包jre8以及自己的java应用jar包到镜像,包含Dockerfile文件和启动截图等,环境为Win10 Pro + Docker Desktop,仅供学习参考。

  • docker制作java镜像

    Dockerfile FROM 192.168.1.2/common/...ENV JAVA_OPT="-Xmx640m -Xms640m -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -Dfile.encoding=utf-8" \ SERVICE_PORT=1100 VERSION= EXPOSE ${SERVICE_PORT} WORKDI

  • JAVA 可用的高性能docker镜像及如何使用?

    目前docker hub上下载量很大的java、openjdk镜像都已经被弃用,不再维护,目前可用的java docker镜像有哪一些呢?哪一些镜像是主流的? 本文带有领略java可用的镜像资源、如何使用它们,如何构建springboot镜像?

  • Java应用打包成Docker镜像

    docker 镜像打包

  • 自制Docker镜像jdk+nodejs+maven+git(基于centos)

    自制Docker镜像jdk+nodejs+maven+git(基于centos) 文档地址: https://blog.csdn.net/qq_29777207/article/details/113191341

  • 基于CentOS7的Java8中文Docker容器镜像

    【代码】基于CentOS7的Java8Docker容器镜像。

  • java 微服务之docker基础入门 docker部署 镜像相关命令 容器命令 数据卷 DockerCompose Docker镜像仓库

    镜像是将应用程序及其需要...指定基础镜像# 配置环境变量,JDK的安装目录# 拷贝jdk和java项目的包# 安装JDK# 配置环境变量# 暴露端口# 入口,java项目的启动命令# 指定基础镜像# 暴露端口# 入口,java项目的启动命令。

  • 【云原生|Docker】Docker镜像操作

    Docker 镜像相当于一个 root 文件系统,比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。在实际使用中,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好...

  • Docker-基于java8构建java项目镜像

    需求:基于openjdk:8-jdk-alpine镜像,将一个java项目构建为镜像 实现步骤: 如果没有,需要去镜像仓库拉取镜像,比如DockerHub 复制命令到linux系统控制台 运行成功 进入到当前文件夹目录,然后使用docker ...

  • 自己制作一个java:11的docker镜像

    下载java11的jdk 下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 选择linux-64的版本(jdk-11.0.7_linux-x64_bin.tar.gz) 2、创建Dockerfile文件 文件内容如下: #1.指定基础...

  • docker自定义镜像(基于java8)

    - a )基于java:8-alpine作为基础镜像 - b )将app.jar拷贝到镜像中 - c )暴露端口 - d )编写入口ENTRYPOINT 内容如下: FROM java:8-alpine COPY ./app.jar /tmp/app.jar EXPOSE 8090 ENTRYPOINT java...

  • 详解docker镜像centos7配置Java运行环境

    2.基于拉取到的镜像运行一个容器 docker run -it --name mycentos docker.io/centos:7 /bin/bash 运行起来就直接进入了容器的交互界面 3.容器中安装jdk 首先查询可用的jdk版本 yum search java|grep jdk 根据搜索...

  • linux-Ubantu系统,基于java基础镜像,dockerfile源码编译安装opencv,重新制作docker镜像

    基于java基础镜像,dockerfile源码编译安装opencv

  • 基于Docker镜像安装Rancher

    Rancher 服务器是一个Docker image,所以其软件本身不需要安装,只需要执行Docker 命令下载并且成功运行Docker 服务器镜像即可。 1.搜索并下载rancher/server镜像,等待镜像下载成功(镜像比较大可以选择从国内网易...

  • 创建基于oracle jdk8的自定义docker镜像

    创建基于oracle jdk8的自定义docker镜像。如果服务器的版本是open-jdk,则进行如下操作。移动jdk包到oracle-jdk文件夹。创建oracle-jdk文件夹。在工程里引入对应的jdk镜像。接着保存退出,然后生成镜像。验证安装...

Global site tag (gtag.js) - Google Analytics