Eclipse Temurin 21 (JRE) Alpine 镜像获取、离线导入与推送操作

📌 摘要 :本文介绍如何在离线(内网)环境中获取并导入 Eclipse Temurin JRE 21 的 Docker 镜像。内容涵盖两种获取方式(直接下载官方 tar 包、或先拉取再导出)、镜像导入与查看、JRE 具体版本的三种验证方法、标签重命名(规避 + 非法字符)以及推送至私有仓库的完整流程,并附有注意事项与最佳实践。


Eclipse Temurin 21 (JRE) Alpine 镜像离线导入与推送操作总结

📌 环境说明

  • 操作系统:Linux(CentOS/RHEL,root 用户)
  • 目标私有仓库 :registry.example.com/your-project/
  • 镜像基础 :eclipse-temurin:21-jre-alpine(JDK 21.0.12.1+1 的 JRE 版本,基于 Alpine Linux)

🛠️ 操作步骤

1. 获取镜像并构建 tar 包(标准离线部署流程)

⚠️ 注意 :官方没有提供 Docker 镜像的预构建 tar 包直接下载渠道。要获得可用于离线环境的 Docker 镜像 tar 包,必须先在联网环境拉取镜像,再导出。

(1)在有外网的环境拉取官方镜像

bash 复制代码
docker pull eclipse-temurin:21-jre-alpine

💡 提示 :国内环境可配置镜像加速器(如阿里云、中科大等),或修改 Docker Daemon 的 registry-mirrors 以提升拉取速度。

(2)将镜像导出为 tar 包

bash 复制代码
docker save -o eclipse-temurin-21-jre-alpine.tar eclipse-temurin:21-jre-alpine

💡 可选压缩:若需减小传输体积,可结合 gzip 压缩:

bash 复制代码
docker save eclipse-temurin:21-jre-alpine | gzip > eclipse-temurin-21-jre-alpine.tar.gz

(3)将 tar 包传输到离线服务器

通过 scp、rsync 或移动介质将文件拷贝至目标机器。

2. 导入镜像

在目标离线服务器上,执行导入:

bash 复制代码
docker load -i eclipse-temurin-21-jre-alpine.tar

(若传输的是 .tar.gz 压缩包,请先解压:gunzip eclipse-temurin-21-jre-alpine.tar.gz 再执行导入)

3. 查看镜像

bash 复制代码
docker images | grep jre

输出结果:

text 复制代码
eclipse-temurin    21-jre-alpine    d0f52469e5e2    2 weeks ago    208MB

4. 🔍 补充:查看 JRE 具体版本的方法

仅通过 docker images 无法看到具体的 Java 小版本号,可以通过以下三种方法验证:

方法一:运行临时容器查看(最推荐,最直接)

bash 复制代码
docker run --rm eclipse-temurin:21-jre-alpine java -version

输出示例:

text 复制代码
openjdk version "21.0.12.1" 2026-08-19
OpenJDK Runtime Environment Temurin-21.0.12.1+1 (build 21.0.12.1+1)
OpenJDK 64-Bit Server VM Temurin-21.0.12.1+1 (build 21.0.12.1+1, mixed mode, sharing)

方法二:查看镜像内的 release 文件

bash 复制代码
docker run --rm eclipse-temurin:21-jre-alpine cat /opt/java/openjdk/release

(Temurin 镜像默认将 Java 安装到 /opt/java/openjdk 目录下)

方法三:查看镜像历史记录(辅助参考)

bash 复制代码
docker history eclipse-temurin:21-jre-alpine

5. 重新构建标签(Tag)

⚠️ 避坑提示 :Docker 的标签名称只允许包含小写字母、数字、下划线 _、连字符 - 和点 .。由于 Java 官方版本号中的加号 +(如 21.0.12.1+1)在 Docker 标签中属于非法字符,必须将 + 替换为 - 或 _。

执行打标签操作(将 +1 替换为 -1):

bash 复制代码
docker tag eclipse-temurin:21-jre-alpine registry.example.com/your-project/eclipse-temurin:21.0.12.1-jre-alpine

6. 推送至私有仓库

bash 复制代码
docker push registry.example.com/your-project/eclipse-temurin:21.0.12.1-jre-alpine

确保已使用 docker login registry.example.com 登录,且拥有 your-project 项目的推送权限。

💡 注意事项与最佳实践

  1. 渠道说明 :官方(Adoptium / Docker Hub)仅提供系统级安装包(.tar.gz)的直接下载,不提供 Docker 镜像 tar 包 。离线 Docker 镜像 tar 包只能通过 docker pull + docker save 自行生成。
  2. 标签规范 :在任何 Docker 操作中,tag 名称禁止使用 +。建议将 Java 的 build 号(+1)转换成 _1 或 -1。
  3. 架构匹配 :本例使用的是 Alpine 版本。如果你的业务容器也是基于 Alpine 构建,可以直接使用;如果业务容器是 Ubuntu/CentOS 等常规 Linux 发行版,请勿使用此 Alpine 镜像 (musl libc 与 glibc 不兼容),需下载非 Alpine 的 eclipse-temurin:21-jre 版本。
  4. 推送后验证 :推送完成后,可以在其他机器上执行 docker pull registry.example.com/your-project/eclipse-temurin:21.0.12.1-jre-alpine 以验证仓库的可用性。

📝 说明 :文档中的 registry.example.com/your-project/ 为占位符,实际使用时请替换为你自己的私有仓库地址和项目空间名称。

相关推荐
孙浩君1 小时前
我用 Spring Boot + xterm.js 写了个终端风格互动叙事游戏引擎:游戏即文件,上传一个 JSON 就能玩
java
jose1 小时前
URL 里多写了一个端口,为什么请求还能调通?
java·后端
孙浩君2 小时前
我用 Spring Boot 写了个「终端风格模拟经营游戏引擎」:引擎 + JSON 游戏文件,开箱即玩
java
y1su2 小时前
Leetcode 动态规划 模板
java·数据结构·算法·leetcode·动态规划
Wang's Blog2 小时前
Java 项目实战: 交友项目 - JWT 概述:为什么要用 Token 换掉 Session
java·ui·交友
深蓝电商API2 小时前
Docker+K8s部署爬虫:从单机到集群的完整路线
爬虫·docker·k8s
SL_staff3 小时前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
Coisinier3 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
李福春3 小时前
技术思考问题6:技术演讲该晒成功架构,还是交代失败与取舍?
java·开发语言·架构·computer use·深圳同盟·腾讯云架构师技术同盟·反演思维