部署 Java 应用时,通常会使用一些基于 JVM(Java Virtual Machine)的基础镜像来构建 Docker 镜像。选择基础镜像时需要考虑以下因素:
- Java 版本(如 JDK 或 JRE,Java 8、11、17 等)
- 是否需要开发工具(JDK 还是 JRE)
- 镜像大小(Alpine、Slim、Full)
- 安全性与维护支持
- 企业级支持需求(如 Red Hat UBI)
以下是常见的 Java 基础镜像分类及推荐:
✅ 最常用基础镜像
1. OpenJDK 官方镜像(已逐步被 Adoptium 替代)
FROM openjdk:8-jdk-alpine
- 已不再积极维护。
- 推荐使用 Adoptium 替代。
2. Eclipse Adoptium(原 AdoptOpenJDK)
这是目前最常用的社区版 Java 镜像源,提供多种版本和平台支持。
# 示例:JDK 17 + Alpine
FROM eclipse-temurin:17-jdk-alpine
# 示例:JRE 11 + Slim
FROM eclipse-temurin:11-jre-slim
官网:https://hub.docker.com/_/eclipse-temurin
支持架构:x86_64, ARM64 等
3. Amazon Corretto
亚马逊提供的免费、多平台、生产就绪的 OpenJDK 发行版。
FROM amazoncorretto:17
官网:https://hub.docker.com/_/amazoncorretto
优点:长期支持、性能优化,适合 AWS 用户
4. Red Hat UBI + OpenJDK / Quarkus
如果你在红帽 OpenShift 上部署或需要企业支持,可以使用 UBI(Universal Base Image)。
FROM registry.redhat.io/ubi8/openjdk-17-runtime:latest
适用于企业环境,有官方支持和安全更新。
5. GraalVM(用于原生镜像构建)
如果你使用的是 GraalVM Native Image 技术构建可执行文件(非传统 JVM 启动),可以选择 GraalVM 的基础镜像。
FROM ghcr.io/graalvm/native-image:ol8-java17
📦 根据场景推荐
| 场景 | 推荐基础镜像 | 说明 |
|---|---|---|
| 普通 Spring Boot 应用 | eclipse-temurin:17-jdk 或 amazoncorretto:17 |
当前主流 Java 17 |
| 轻量级容器(小体积) | eclipse-temurin:17-jdk-alpine 或 -slim |
减少镜像体积 |
| 生产环境、企业支持 | registry.redhat.io/ubi8/openjdk-17-runtime |
提供安全补丁和支持 |
| 构建原生应用(GraalVM) | ghcr.io/graalvm/native-image |
用于构建 AOT 编译的二进制文件 |
| 微服务框架(如 Quarkus) | quay.io/quarkus/quarkus-mandrel 或 eclipse-temurin |
Mandrel 是 Red Hat 对 GraalVM 的发行版 |
🧪 示例 Dockerfile(Spring Boot)
# 使用 Adoptium JDK 17 Alpine 版本
FROM eclipse-temurin:17-jdk-alpine
# 设置工作目录
WORKDIR /app
# 复制本地 jar 包到容器中
COPY my-app.jar app.jar
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
🔒 小贴士
- 不要使用
latest标签,建议指定具体版本号(如17-jdk-alpine),避免未来构建不一致。 - 如果只运行不编译,建议使用 JRE 而不是 JDK,以减小镜像体积。
- 若对安全性要求高,建议使用有官方维护支持的镜像(如 Amazon Corretto、Red Hat UBI)。
如需根据你的项目 Java 版本或部署平台进一步定制,请告诉我具体情况,我可以帮你推荐更合适的镜像。
CLOUD技术博