百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

五个基于Java的Docker镜像

toyiye 2024-06-21 11:57 13 浏览 0 评论

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

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

1STASH

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

细节

如果你想将 Git 远程主机从一个 Stash 实例迁移到另一个 Stash 实例,请注意虽然可以把仓库复制过去, pull 请求却是无法被复制过去的。你也不能在实例间迁移。不过,Stash 的开发团队会在将来添加这些功能(http://stackoverflow.com/questions/31712148/migrate-single-repository-from-one-atlassian-stash-server-to-another-server-and)。

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

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

在 Stash 中开始一个新项目时,项目管理者应从一个全新的仓库入手:

ssh user@host git init --bare /path/to/repo.git

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

2TOMCAT

Tomcat 是个实现了 Oracle 的 Java ServletJSP规范的开源 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 提供了一些方案来提高虚拟机的熵。

3APACHE HADOOP

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

细节

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

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

4MAVEN

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

细节

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

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

5GLASSFISH

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 联合来提升工作流程、项目管道以及项目的可扩展性。

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码