![20140709134300-846982186.jpg](http://studygolang.qiniudn.com/151008/511a61c92a4d030e330ae41695b4a914.jpg)
在web后端开发中,Java语言一直是最受欢迎的语言之一,而作为Android开发的基础语言,Java在移动开发领域也有着惊人的受欢迎度,本文小编就将为大家介绍Java的5个具有代表性的Docker镜像,希望对大家学习Java语言有帮助。
1、STASH
Stash 是 Git 代码管理和协作工具,允许将部署节点集群化,从而减少活动主机的停机时间,且不会对每个添加的节点造成性能影响。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 背景的人有点不同寻常。
2、TOMCAT
对于Java开发人员而言,相信对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提供了 一些方案来提高虚拟机的熵。
3、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 运行的。如果你的项目不需要权限系统,可使用用户邮件列表的这个方式来解决。
4、MAVEN
Apache Maven是个围绕“项目对象模型”(Project Object Model,简称 POM)概念的软件项目管理工具。Maven 据此从一个中央信息源来管理项目的构建、文档或报告。Maven 还提供了开发期工具,提供项目的邮件列表、代码控制器的变更日志、依赖列表或单元测试报告。
使用注意事项:
在运行 Maven 的 Docker 插件时,有个错误:如果用户没有指定命令,一个空的 CMD 会被输出。对于那些想让容器继承父容器的信息的用户而言,会很受挫。使用官方 Docker 镜像可缓解这些问题。
如果你的服务器运行着 Jenkins,用于创建发布版或快照的设置选项在处理 mvn 命令的 Docker 参数时很快会变成一个麻烦。 Jenkins 的 Maven发布插件会自动配置 pom.xml 并部署快照。
5、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上这一问题的解决方法 :将无法被删除的结构上移一层,然后删除它。
结束语
以上就是Java开发中,常用的5个Docker镜像,他们可以很好的提升工作流程、项目管理以及项目的可扩展性,是初学者必须掌握的几个工具,希望本文的分享可以帮助你掌握相关知识。
相关阅读:《Java 语言中的文件权限如何设置》 http://www.maiziedu.com/group/article/6293/
有疑问加站长微信联系(非本文作者)