在 Docker 中,Java 的基础镜像主要分为官方镜像(由 OpenJDK 提供)和第三方镜像(如 Amazon Corretto、Eclipse Temurin 等)。以下是常见的 Java 基础镜像分类和示例:
1. 官方 OpenJDK 镜像
由 Docker 官方维护,基于 OpenJDK,标签格式为 openjdk:<version> 或 openjdk:<version>-<variant>:
- 最新版本:
FROM openjdk:17 # 最新 LTS 版本 FROM openjdk:21 # 最新非 LTS 版本 - 指定 JVM 变体:
FROM openjdk:17-jdk # 完整 JDK(默认) FROM openjdk:17-jre # 仅 JRE(更小) FROM openjdk:17-slim # 基于 Debian Slim 的轻量版 FROM openjdk:17-alpine # 基于 Alpine Linux(最小化,但需注意 glibc 兼容性)
2. 第三方 Java 镜像
Amazon Corretto
Amazon 提供的 OpenJDK 发行版,长期支持:
FROM amazoncorretto:17 # LTS 版本
FROM amazoncorretto:21 # 最新版本
Eclipse Temurin
Adoptium 社区维护的 OpenJDK 发行版(原 AdoptOpenJDK):
FROM eclipse-temurin:17-jdk
FROM eclipse-temurin:21-jre
Azul Zulu
Azul Systems 提供的 OpenJDK 镜像,支持多种平台:
FROM azul/zulu-openjdk:17
FROM azul/zulu-openjdk-alpine:21
IBM Semeru
IBM 提供的 OpenJDK 发行版:
FROM ibm-semeru-runtimes:open-17-jdk
3. 轻量级镜像推荐
- Alpine 基础(体积最小,但需测试兼容性):
FROM eclipse-temurin:17-jdk-alpine - Slim 基础(平衡体积和兼容性):
FROM openjdk:17-jdk-slim
4. 镜像选择建议
- 生产环境:优先选择长期支持(LTS)版本(如 Java 11/17/21)。
- 镜像大小:根据需求选择
-alpine(最小)、-slim(适中)或默认镜像。 - 兼容性:Alpine 镜像使用
musl libc,某些 Java 特性(如Native Memory Tracking)可能受限。
示例 Dockerfile
# 使用 Eclipse Temurin JDK 17 + Alpine
FROM eclipse-temurin:17-jdk-alpine
COPY target/app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
可以通过 Docker Hub 搜索具体镜像的标签和文档。
云服务器