adoptopenjdk/openjdk11-openj9本仓库镜像包含由AdoptOpenJDK构建的、集成Eclipse OpenJ9虚拟机的OpenJDK 11二进制文件。AdoptOpenJDK提供两类Docker镜像:
两类镜像使用相同的AdoptOpenJDK Java二进制文件,核心差异在于操作系统支持范围。
amd64、ppc64le、s390x架构,同一命令可在不同架构环境中运行。本仓库镜像支持以下基础操作系统(OS):
amd64(x86_64)ppc64le(PowerPC 64位小端)s390x(IBM System z)按操作系统分组,主要标签格式为[OS]-[jdk|jre|slim],示例如下(完整标签及Dockerfile见对应链接):
alpine:JDK完整版,示例标签jdk-11.0.11_9_openj9-0.26.0-alpine,Dockerfile见链接。alpine-slim:JDK精简版,示例标签jdk-11.0.11_9_openj9-0.26.0-alpine-slim,Dockerfile见链接。alpine-jre:JRE完整版,示例标签jre-11.0.11_9_openj9-0.26.0-alpine,Dockerfile见链接。centos:JDK完整版,示例标签jdk-11.0.11_9_openj9-0.26.0-centos,Dockerfile见链接。centos-slim:JDK精简版,示例标签jdk-11.0.11_9_openj9-0.26.0-centos-slim,Dockerfile见链接。centos-jre:JRE完整版,示例标签jre-11.0.11_9_openj9-0.26.0-centos,Dockerfile见链接。debian、debian-slim、debian-jre,Dockerfile见Debian JDK完整版。ubi、ubi-slim、ubi-jre、ubi-minimal-jre,Dockerfile见UBI JDK完整版。latest(基于Ubuntu的JDK完整版)、slim(基于Ubuntu的JDK精简版)、jre(基于Ubuntu的JRE完整版)。每日更新的开发版,标签格式在稳定版基础上添加-nightly后缀,例如:
alpine-nightly(Alpine JDK每日构建版)centos-nightly-slim(CentOS JDK精简版每日构建版)nightly(默认Ubuntu JDK每日构建版)完整标签及Dockerfile见GitHub仓库。
slim标签减少镜像体积,优化容器启动速度。nightly标签验证最新JVM特性或修复。bash# 拉取最新稳定版JDK(基于Ubuntu) docker pull adoptopenjdk/openjdk11-openj9:latest # 拉取Alpine JRE精简版 docker pull adoptopenjdk/openjdk11-openj9:alpine-jre
bashdocker run --rm adoptopenjdk/openjdk11-openj9:latest java -version
输出示例:
openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.11+9) Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.26.0, JRE 11 Linux amd64-64-Bit Compressed References 20210421_932 (JIT enabled, AOT enabled) OpenJ9 - 0394ef754 OMR - 582366ae5 JCL - 3b09cfd7e9 based on jdk-11.0.11+9)
通过Dockerfile将Java应用打包为镜像:
dockerfile# 使用Alpine JRE精简版作为基础镜像 FROM adoptopenjdk/openjdk11-openj9:alpine-jre # 创建应用目录 RUN mkdir -p /opt/app # 复制应用JAR包 COPY your-app.jar /opt/app/ # 启动命令 CMD ["java", "-jar", "/opt/app/your-app.jar"]
构建并运行:
bashdocker build -t your-app:v1 . docker run -d -p 8080:8080 --name your-app-container your-app:v1
OpenJ9提供类数据共享(CDS)功能,可通过共享类缓存提升JVM启动速度并减少内存占用。需将缓存目录挂载到容器外部(主机目录或数据卷)。
bash# 构建镜像(含CDS配置) docker build -t app-with-cds - <<EOF FROM adoptopenjdk/openjdk11-openj9:latest RUN mkdir /opt/shareclasses /opt/app COPY your-app.jar /opt/app/ CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/app/your-app.jar"] EOF # 运行容器,挂载主机缓存目录 docker run -d -v /host/path/to/shareclasses:/opt/shareclasses --name app-cds app-with-cds
bash# 创建数据卷容器(持久化缓存目录) docker create -v /opt/shareclasses --name cds-cache adoptopenjdk/openjdk11-openj9:latest /bin/true # 运行应用容器,共享缓存卷 docker run -d --volumes-from cds-cache --name app-cds app-with-cds
yamlversion: '3' services: java-app: image: adoptopenjdk/openjdk11-openj9:alpine-jre container_name: java-app volumes: - ./app:/opt/app # 挂载应用目录 - cds-cache:/opt/shareclasses # 共享CDS缓存 command: ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/app/your-app.jar"] ports: - "8080:8080" restart: unless-stopped volumes: cds-cache: # 定义CDS缓存数据卷
Dockerfile及相关构建脚本采用Apache License 2.0授权。
镜像中可能包含基础OS及依赖组件(如Bash等),其许可证需遵循各自分发方要求。用户应确保使用本镜像符合所有组件的许可证条款。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务