收藏本站
博为峰Android开发培训Banner
您所在的位置:博为峰教育首页 > 资料精选 > 学习资料 > 【学习资料】基于Java的5个Docker镜像

【学习资料】基于Java的5个Docker镜像

         发布时间:2015年10月26日 06:22分       来源:博为峰教育网采编    关键词:Java     | 上一篇 | 下一篇 |


 

       尽管Java看起来不是很“时髦”,但仍是一门在移动市场、开源界及企业中占据主导地位的非常受欢迎的重要的语言。举个例子,你可知道在Apache软件基金会中63%的项目是用Java写的么?幸运的是,在容器技术发展进程中,Java开发人员并未被冷落。本文将着重介绍五个流行的基于Java的Docker镜像与配置,以及他们如何能帮助你的团队更有效地工作。

 

基于Java的5个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可作为临时解决方法。

 

       APACHE 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运行的。如果你的项目不需要权限系统,可使用用户邮件列表的这个方式来解决。

 

       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上这一问题的解决方法:将无法被删除的结构上移一层,然后删除它。