奋斗
努力

Docker中Java的基础镜像有哪些?

云计算

在 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. 镜像选择建议

  1. 生产环境:优先选择长期支持(LTS)版本(如 Java 11/17/21)。
  2. 镜像大小:根据需求选择 -alpine(最小)、-slim(适中)或默认镜像。
  3. 兼容性: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 搜索具体镜像的标签和文档。

未经允许不得转载:云服务器 » Docker中Java的基础镜像有哪些?