Docker中Java基础镜像OpenJDK和OracleJDK使用方法

 更新时间:2024年06月18日 08:55:48   作者:闫小甲  
OpenJDK是Java社区的核心项目,由全球各地的开发者共同参与开发和维护,OracleJDK在OpenJDK的基础上添加了一些商业功能和工具,这篇文章主要给大家介绍了关于Docker中Java基础镜像OpenJDK和OracleJDK使用方法的相关资料,需要的朋友可以参考下

前言

Docker中的Java基础镜像主要围绕OpenJDK和Oracle JDK两个主流的Java开发环境,提供了多个版本以适应不同的项目需求。
以下是一些常用的Java基础镜像版本及其使用方法:

OpenJDK镜像

  • openjdk:8 - Java 8版本,非常广泛使用的版本,适用于需要Java 8特性的项目。
  • openjdk:11 - Java 11是LTS(长期支持)版本,推荐用于新项目的开发。
  • openjdk:17 - 最新的LTS版本(截至我知识更新时),提供最新特性和性能改进。

Oracle JDK镜像

虽然Oracle JDK镜像不如OpenJDK常见,但也有官方或社区维护的版本,如:

  • oraclelinux:7-jdk8 或 oracle/java:8 (注意:具体命名可能会随时间变化,请以Docker Hub上的实际命名为准)
  • oraclelinux:7-jdk11
  • oraclelinux:8-jdk17

使用方法

  • 拉取镜像:首先,你需要从Docker Hub或其他镜像仓库拉取所需的Java镜像。例如,要拉取Java 8的OpenJDK镜像,可以使用以下命令:

    docker pull openjdk:8
    
  • 编写Dockerfile:接下来,创建一个Dockerfile来定义你的Java应用容器。以下是一个简单的例子,基于openjdk:8镜像构建一个应用容器:

    FROM openjdk:8
    COPY . /usr/src/myapp
    WORKDIR /usr/src/myapp
    RUN javac Main.java
    CMD ["java", "Main"]
    

    这个例子中,首先指定了基础镜像为openjdk:8,然后将当前目录下的所有文件复制到容器的/usr/src/myapp目录下,设置工作目录,并编译Java程序,最后定义了容器启动时运行的命令。

  • 构建镜像:在包含Dockerfile的目录下,运行以下命令来构建你的应用镜像:

    docker build -t my-java-app .
    
  • 运行容器:构建完成后,你可以使用以下命令运行你的Java应用容器:

    docker run -it --name my-running-app my-java-app
    

请根据你的具体需求选择合适的Java镜像版本,并相应调整Dockerfile中的指令。记得检查最新镜像标签,因为随着时间的推移,会有新的版本发布,旧版本可能不再维护。

附:Oracle JDK 和 OpenJDK的区别

Oracle JDK和OpenJDK是两个Java开发工具包(JDK)的发行版,它们之间有一些关键的区别。这两个发行版都提供了进行Java开发所需的工具和库,但在许可、支持和更新方面存在一些差异。

  • 1.许可:
    • Oracle JDK:在过去,Oracle JDK是在商业许可下提供的。从JDK 11(2018年9月)开始,Oracle改变了其许可模式。Oracle JDK现在采用订阅模型,用户需要为特定版本(例如JDK 11)之后的商业支持和更新付费。
    • OpenJDK:另一方面,OpenJDK具有开源许可证(GNU通用公共许可证第2版,并带有Classpath例外),允许自由使用、分发和修改源代码。
  • 2.支持:
    • Oracle JDK:采用订阅模型,Oracle为Oracle JDK提供商业支持和长期更新。这包括修复错误、安全补丁和其他更新,但需要付费订阅。
    • OpenJDK:OpenJDK通常由社区推动,虽然有组织和供应商提供OpenJDK版本的支持,但并不是由Oracle直接提供。支持和更新的程度可能因涉及的组织或供应商而异。
  • 3.更新:
    • Oracle JDK:Oracle通常为其JDK提供定期更新和长期支持(LTS)版本。但是,对于JDK 11之后的LTS版本,更新和支持可能需要商业订阅。
    • OpenJDK:OpenJDK也会从社区获得定期更新,但具体发行版或供应商可能会因此而异。
  • 4.TCK(技术兼容性测试套件):
    • Oracle JDK:Oracle JDK经过使用Java技术兼容性测试套件(TCK)的兼容性测试,以确保符合Java规范。
    • OpenJDK:OpenJDK可以从源代码编译,并经过相同的TCK测试以实现兼容性。某些发行版也可能通过了TCK测试,提供了与Java平台兼容的保证。

总之,Oracle JDK过去是商业许可下的JDK,但已转向订阅模型。另一方面,OpenJDK是开源的且免费提供。这两个发行版都可以用于Java开发,但选择可能取决于许可要求、支持需求和对开源软件的偏好。由于其开源特性和社区驱动的开发,许多开发人员和组织已转向使用OpenJDK或其他基于OpenJDK的发行版。

总结

到此这篇关于Docker中Java基础镜像OpenJDK和OracleJDK使用方法的文章就介绍到这了,更多相关Java基础镜像OpenJDK和OracleJDK内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 清理docker在var目录下的大量空间占用问题

    清理docker在var目录下的大量空间占用问题

    这篇文章主要介绍了如何清理docker在var目录下的大量空间占用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 在Linux系统中安装Docker的过程

    在Linux系统中安装Docker的过程

    这篇文章主要介绍了如何在Linux系统中安装Docker,其实安装docker真的很简单,只需要几条命令就可以完成了,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • docker容器高效连接Redis的方法步骤

    docker容器高效连接Redis的方法步骤

    在微服务架构中,Redis 是一种常见的高效缓存解决方案,通常用于存储临时数据、会话信息或 token,这篇博客将以实际项目为例,详细介绍如何配置 Flask 应用中的服务容器连接宿主机上的 Redis 服务,需要的朋友可以参考下
    2024-09-09
  • skywalking在docker中应用方式

    skywalking在docker中应用方式

    这篇文章主要介绍了skywalking在docker中应用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • CentOS7部署19版docker(简单,可跟做)

    CentOS7部署19版docker(简单,可跟做)

    这篇文章主要介绍了CentOS7部署19版docker,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • docker私有仓库的搭建和使用详解

    docker私有仓库的搭建和使用详解

    这篇文章主要介绍了docker私有仓库的搭建和使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 详解Docker Swarm 在持续集成测试中的应用

    详解Docker Swarm 在持续集成测试中的应用

    本文主要介绍如何利用 Docker Swarm 集群功能和 Selenium Grid 脚本分发功能,来搭建一个可以动态扩容的 Selenium 自动化脚本执行环境,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • docker在Linux环境下的安装教程

    docker在Linux环境下的安装教程

    这篇文章主要介绍了docker在Linux环境下的安装教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Docker下部署MinIO存储服务通过Buckets实现文件的远程上传功能

    Docker下部署MinIO存储服务通过Buckets实现文件的远程上传功能

    MinIO是一个开源的软件,可以免费使用,还可以在普通硬件上运行,降低了存储成本,下面介绍在本地Docker中部署 MinIO 服务,并实现远程访问管理界面,节约云服务器运行成本,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法

    Docker报错:OCI runtime exec failed: exec failed: contain

    这篇文章主要给大家介绍了关于Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论