在使用 Docker 部署 Java 程序时,选择合适的镜像非常重要,主要取决于你的 Java 应用类型(如 Java 8、Java 11、Spring Boot、是否需要 JDK/JRE 等)。以下是一些常见的官方和社区推荐的镜像:
✅ 常见推荐镜像
1. OpenJDK 官方镜像(已停止维护)
- 已被 Adoptium(Eclipse Temurin)取代。
- 示例:
FROM openjdk:8-jdk-alpine
2. Adoptium / Eclipse Temurin(推荐)
- 当前最主流的开源免费 JDK 镜像。
- 支持多个版本:8, 11, 17, 21 等。
- 提供
JDK和JRE镜像。
示例(以 Java 17 为例):
FROM eclipse-temurin:17-jdk-jammy
注:
jammy是 Ubuntu 的一个版本代号。也可以使用alpine镜像来减小体积:FROM eclipse-temurin:17-jdk-alpine
3. Amazon Corretto(适合 AWS 用户)
- Amazon 提供的免费、多平台、生产就绪的 OpenJDK 发行版。
- 支持长期支持。
示例:
FROM amazoncorretto:17
4. Red Hat UBI + OpenJDK(企业级推荐)
- 如果你在 Red Hat OpenShift 或其他企业环境中部署,推荐使用基于 UBI(Universal Base Image)的镜像。
示例:
FROM registry.redhat.io/ubi9/openjdk-17-runtime:1.0
5. BellSoft Liberica(商业公司提供)
- BellSoft 提供的 Liberica JDK,适合对支持有要求的企业用户。
示例:
FROM bellsoft/liberica:17-server-jre
📦 如何选择?
| 场景 | 推荐镜像 |
|---|---|
| 普通开发或测试环境 | eclipse-temurin:xx-jdk-alpine |
| 生产环境(通用) | eclipse-temurin:xx-jdk-jammy |
| 生产环境(AWS) | amazoncorretto:xx |
| 企业级部署(Red Hat) | registry.redhat.io/ubiX/openjdk-xx-runtime |
| 轻量级容器 | 使用带有 alpine 标签的镜像 |
| 需要调试工具 | 使用 jdk 而不是 jre |
🛠️ 示例 Dockerfile(Spring Boot 应用)
# 使用 Adoptium JDK 17
FROM eclipse-temurin:17-jdk-jammy
# 设置工作目录
WORKDIR /app
# 复制构建好的 jar 包
COPY your-app.jar app.jar
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
🔒 小贴士
- 安全更新:确保基础镜像定期更新,避免漏洞。
- 镜像大小:优先使用
alpine版本,但注意 glibc 兼容性问题。 - 版本固定:建议指定具体版本标签,如
eclipse-temurin:17.0.9_9,而不是latest。 - 国内X_X:可以使用阿里云、华为云等镜像X_X服务拉取官方镜像。
如果你告诉我你的 Java 版本、用途(比如 Spring Boot)、是否需要图形界面、是否用于生产环境等信息,我可以帮你更精确地推荐镜像。
CLOUD技术博