官方与非官方Docker镜像
AdoptOpenJDK在两个不同的DockerHub仓库中提供镜像:
- DockerHub维护的镜像(即官方DockerHub镜像),链接为https://hub.docker.com/_/adoptopenjdk%E3%80%82
- AdoptOpenJDK维护的镜像(本仓库)。
两者均使用AdoptOpenJDK提供的相同底层Java二进制文件,但支持不同的操作系统版本:
- 常规的基于Ubuntu和Windows的jdk/jre镜像,请查看官方Docker镜像。
- 本仓库提供基于Alpine、CentOS、ClefOS、Debian、Debian-Slim、UBI和UBI-Minimal的镜像,以及所有支持OS的Slim版本镜像。
支持的标签及对应Dockerfile链接
发布版本
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/alpine/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/alpine/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/alpine/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/centos/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/centos/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/centos/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/clefos/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/clefos/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/clefos/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debian/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debian/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/debian/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debianslim/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debianslim/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/debianslim/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubi/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi-minimal/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubi-minimal/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubuntu/Dockerfile.openj9.releases.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubuntu/Dockerfile.openj9.releases.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubuntu/Dockerfile.openj9.releases.full
Nightly版本
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/alpine/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/alpine/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/alpine/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/centos/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/centos/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/centos/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/clefos/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/clefos/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/clefos/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debian/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debian/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/debian/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debianslim/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/debianslim/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/debianslim/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubi/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubi-minimal/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubi-minimal/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubuntu/Dockerfile.openj9.nightly.full
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jdk/ubuntu/Dockerfile.openj9.nightly.slim
- https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/13/jre/ubuntu/Dockerfile.openj9.nightly.full
快速参考
- 获取帮助: Eclipse OpenJ9 Slack;Eclipse邮件列表
- 问题反馈: https://github.com/eclipse/openj9/issues
- 支持的架构: (https://github.com/docker-library/official-images#architectures-other-than-amd64)
amd64, ppc64le, s390x
概述
本仓库中的镜像包含使用Eclipse OpenJ9构建的OpenJDK二进制文件。Eclipse OpenJ9是一款高性能、可扩展的Java™虚拟机(JVM)实现,在生产环境中运行Java应用程序有着良好的记录。由IBM贡献给Eclipse项目的OpenJ9 JVM是IBM SDK、Java Technology Edition产品的核心组件,该产品是许多IBM企业软件产品的基础。Eclipse基金会对OpenJ9的持续开发确保了更广泛的协作、新的创新,并为下一代Java应用程序影响OpenJ9的开发提供了机会。包含Eclipse OpenJ9的OpenJDK二进制文件可通过AdoptOpenJDK获取。Java及所有基于Java的商标和徽标是Oracle和/或其关联公司的商标或注册商标。
多架构镜像
OpenJ9支持多架构,因此相同的命令可在所有支持的架构上运行。
如何使用此镜像
要使用最新的Java 13 OpenJDK镜像运行预构建的jar文件,请使用以下命令:
dockerfile
FROM adoptopenjdk/openjdk13-openj9:ubi
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
构建并运行Docker镜像的示例如下:
console
$ docker build -t japp .
$ docker run -it --rm japp
要获取特定版本的Docker镜像,请添加构建号,示例如下:
console
$ docker run --rm -it adoptopenjdk/openjdk13-openj9:jdk-13.0.2_8_openj9-0.18.0 java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.2+8)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.18.0, JRE 13 Linux amd64-64-Bit Compressed References 20200117_151 (JIT enabled, AOT enabled)
OpenJ9 - 6968c18d7
OMR - 7a1b0239a
JCL - 9c5a41bd5f based on jdk-13.0.2+8)
使用类数据共享功能
Eclipse OpenJ9提供了类数据共享功能。该机制在同一主机上运行的多个Java虚拟机(JVM)之间提供透明且动态的数据共享,减少每个JVM实例消耗的物理内存。通过在内存中提供部分验证的类和可能预加载的类,该机制还可缩短JVM的启动时间。
要在同一主机上不同容器中运行的JVM之间启用类数据共享,必须在容器之间共享一个公共位置。此需求可通过主机或数据卷容器满足。启用后,类数据共享会在公共位置创建一个名为“类缓存”的内存映射文件。通过向JVM传递-Xshareclasses选项可启用该功能,如下Dockerfile示例所示:
dockerfile
FROM adoptopenjdk/openjdk13-openj9:nightly
RUN mkdir /opt/shareclasses
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/app/japp.jar"]
cacheDir子选项指定类缓存的位置(例如/opt/sharedclasses)。当通过主机共享时,必须将主机路径挂载到容器中JVM期望找到类缓存的位置。例如:
console
docker build -t japp .
docker run -it -v /path/on/host/shareclasses/dir:/opt/shareclasses japp
当通过数据卷容器共享时,创建一个共享卷的命名数据卷容器。例如:
console
docker create -v /opt/shareclasses --name classcache japp /bin/true
然后,使用--volumes-from标志启动JVM容器以挂载共享卷,示例如下:
console
docker run -it --volumes-from classcache japp
许可证
Dockerfile及相关脚本的许可证为Apache License, Version 2.0。镜像中安装的产品许可证:
- Eclipse OpenJ9 + OpenJDK:组合作品许可证为GNU GPL v2 with Classpath Exception。与所有Docker镜像一样,可能包含其他软件,这些软件可能受其他许可证(如基础发行版中的Bash等,以及包含的主要软件的任何直接或间接依赖项)约束。对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用符合其中包含的所有软件的相关许可证。