
library/ibmjava
library/ibmjava 是 IBM 官方提供的 IBM SDK, Java Technology Edition Docker 镜像,基于 Eclipse OpenJ9 高性能 JVM 构建,是 OpenJDK 的企业级分发版本。该镜像核心支持 Java 8(长期支持版本),同时兼容 Java 11(详见官方文档),提供 SDK(开发工具包)、JRE(运行时环境)、SFJ(轻量版JRE)三种变体,适配 Ubuntu(兼容性强)与 Alpine(轻量)基础镜像,覆盖 amd64、ppc64le、s390x 多架构,适用于企业级 Java 应用(如 WebSphere 服务、微服务、云原生应用)的开发与部署,尤其擅长高并发、低内存占用场景。
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
IBM Java SDK Docker 镜像使用指南
快速参考
维护方
由 IBM Runtime Technologies 官方团队维护。
帮助渠道
可通过 IBM developerWorks 论坛获取 IBM Java 运行时与 SDK 相关支持。
支持的标签及对应 Dockerfile 链接
镜像标签聚焦 Java 8 版本,核心标签及功能如下(无额外版本后缀时默认基于 Ubuntu 基础镜像):
- 8-jre、jre、8、latest: Java 8 运行时环境(含完整类库,无编译器),基于 Ubuntu,适用于生产环境运行已编译 Java 应用
- 8-sfj、sfj: Java 8 轻量版 JRE(移除云环境非必需组件),基于 Ubuntu/Alpine,适用于云原生、轻量容器场景(低内存/磁盘需求)
- 8-sdk、sdk: Java 8 开发工具包(含编译器 javac、调试工具),基于 Ubuntu,适用于 Java 应用开发、编译构建
问题反馈地址
IBM Java GitHub 仓库:https://github.com/ibmjava/dockerfiles%EF%BC%88troubleshooting 可参考官方 How Do I ...? 页面)
支持的架构
amd64(x86-64)、ppc64le(PowerPC 64 位小端序)、s390x(IBM Z 系列服务器),支持多架构自动适配(无需手动添加架构前缀)。
镜像详情
包含元数据、传输大小等信息,可查看 repo-info 仓库的 repos/ibmjava/ 目录(历史记录)。
镜像更新
- 跟踪更新:official-images 仓库的 library/ibmjava 标签
- 更新记录:official-images 仓库的 library/ibmjava 文件(历史记录)
本文档来源
docs 仓库的 ibmjava/ 目录(历史记录)
什么是 library/ibmjava
library/ibmjava 是 IBM 官方推出的 Java 运行时与开发工具包容器化版本,核心特性如下:
-
底层 JVM 优势:基于 Eclipse OpenJ9 JVM(由 IBM 贡献至 Eclipse 基金会),具备低内存占用(比传统 HotSpot JVM 节省 30%+ 内存)、快速启动(启动时间缩短 50%+)、类数据共享(Class Data Sharing)等企业级特性,适合大规模容器集群与微服务场景
-
三种核心变体:
- SDK(Software Developers Kit):含 Java 编译器(javac)、调试工具(jdb)及完整类库,满足开发与构建需求
- JRE(Java Runtime Environment):仅含运行时组件,无编译器,体积小于 SDK,适合生产环境运行已编译应用
- SFJ(Small Footprint JRE):轻量版 JRE,移除云环境非必需组件(如 Java 控制面板),磁盘与内存占用进一步降低,专为云原生应用设计
-
基础镜像适配:
- Ubuntu 基础:默认选项,基于 glibc 库,兼容性强,支持通过 apt 安装额外依赖
- Alpine 基础:非 IBM 官方支持的操作系统,但体积极轻(如 SFJ 镜像仅 101MB,比 Ubuntu 版小 50%+),需额外安装 glibc(IBM SDK 依赖)
-
生态兼容性:是 IBM WebSphere-Liberty 应用服务器的基础镜像,可无缝运行 SAP、IBM 自研企业应用及第三方 Java 框架(如 Spring Boot、MyBatis)
如何使用本镜像
场景 1:基础场景——运行预编译 JAR 包
使用 8-jre 变体(生产环境推荐),将 JAR 包嵌入镜像并运行:
dockerfile# 选择 Java 8 JRE 镜像(Ubuntu 基础,兼容性强) FROM docker.xuanyuan.run/library/ibmjava:8-jre # 创建应用目录(避免权限冲突,使用非 root 用户) RUN mkdir -p /opt/app && chown 1001:1001 /opt/app USER 1001 # 复制预编译的 JAR 包到容器 COPY --chown=1001:1001 app.jar /opt/app/ # 启动命令(可添加 JVM 参数优化,如限制堆内存) CMD ["java", "-Xmx512m", "-jar", "/opt/app/app.jar"]
构建并运行:
bash# 构建镜像(标签为 ibmjava-app) docker build -t ibmjava-app . # 交互式运行,退出时自动删除容器 docker run -it --rm -p 8080:8080 docker.xuanyuan.run/ibmjava-app
场景 2:挂载主机目录——避免 JAR 包嵌入镜像
若 JAR 包需频繁更新,可挂载主机目录到容器,无需重新构建镜像:
dockerfile# 选择 Java 8 SFJ 变体(轻量,适合云环境) FROM docker.xuanyuan.run/library/ibmjava:8-sfj # 直接使用默认用户,指定 JAR 包路径(从主机挂载) CMD ["java", "-jar", "/opt/app/app.jar"]
构建并运行(挂载主机 ./jars 目录到容器 /opt/app):
bashdocker build -t ibmjava-sfj-app . # 挂载主机目录,实时读取最新 JAR 包 docker run -it --rm -v $(pwd)/jars:/opt/app -p 8080:8080 docker.xuanyuan.run/ibmjava-sfj-app
场景 3:启用类数据共享(CDS)——优化多容器内存占用
利用 IBM SDK 独有的类数据共享特性,实现多容器间 JVM 类数据共享,降低整体内存消耗:
dockerfile# 选择 Java 8 JRE 镜像 FROM docker.xuanyuan.run/library/ibmjava:8-jre # 创建类数据共享目录与应用目录 RUN mkdir -p /opt/shareclasses /opt/app && chown 1001:1001 /opt/shareclasses /opt/app USER 1001 # 复制 JAR 包 COPY --chown=1001:1001 app.jar /opt/app/ # 启动命令:启用类数据共享,指定缓存目录 CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/app/app.jar"]
构建并通过数据卷共享类缓存:
bash# 1. 创建命名数据卷(存储类缓存,跨容器共享) docker volume create ibmjava-cds-volume # 2. 构建镜像 docker build -t ibmjava-cds-app . # 3. 启动多个容器,共享同一类缓存卷 docker run -d -v ibmjava-cds-volume:/opt/shareclasses -p 8081:8080 docker.xuanyuan.run/ibmjava-cds-app docker run -d -v ibmjava-cds-volume:/opt/shareclasses -p 8082:8080 docker.xuanyuan.run/ibmjava-cds-app
效果:第二个及后续容器启动时间缩短 30%+,每个容器内存占用减少 20%+(依赖类缓存命中率)。
镜像变体说明
8-sdk
- 核心特点:含 javac 编译器、调试工具、完整类库
- 基础镜像支持:Ubuntu
- 适用场景:Java 应用开发、编译构建、需调试的场景
8-jre
- 核心特点:仅含运行时组件,无编译器,体积小于 SDK
- 基础镜像支持:Ubuntu
- 适用场景:生产环境运行已编译应用(兼容性优先)
8-sfj
- 核心特点:轻量版 JRE,移除云环境非必需组件
- 基础镜像支持:Ubuntu/Alpine
- 适用场景:云原生、边缘计算场景(低内存/磁盘需求)
配置说明
1. 核心环境变量
- JAVA_HOME: /opt/ibm/java/jre(Java 运行时根目录,8-sdk 变体为 /opt/ibm/java)
- PATH: ${JAVA_HOME}/***:${PATH}(包含 Java 二进制目录,可直接执行 java/javac(SDK 变体))
2. 关键 JVM 参数(IBM 特色)
- -Xshareclasses:cacheDir=路径: 启用类数据共享,指定缓存目录,适用于多容器部署、需降低内存占用的场景
- -Xmx大小: 限制 JVM 最大堆内存(如 -Xmx1g),避免容器内存溢出
- -Xquickstart: 启用快速启动模式(OpenJ9 特性),适用于短生命周期应用(如 Serverless 函数)
注意事项
版本选择
- 镜像核心支持 Java 8,Java 11 相关文档与镜像可参考 IBM developerWorks 页面
- 生产环境优先选择 8-jre(兼容性强)或 8-sfj(轻量),避免使用 8-sdk(含开发工具,体积大)
Alpine 基础镜像限制
- Alpine 不是 IBM 官方支持的操作系统,需手动安装 glibc(IBM SDK 依赖),可通过 apk add gcompat 或挂载主机 glibc 库解决依赖问题
- 若应用依赖 libfontconfig 等系统库,建议优先选择 Ubuntu 基础镜像
多架构自动适配
- 镜像支持多架构(amd64/ppc64le/s390x),无需添加架构前缀(如 ppc64le/ibmjava),Docker 会自动拉取匹配宿主机架构的镜像
安全更新
- 定期拉取最新镜像,IBM 会同步 OpenJ9 与 OpenJDK 的安全补丁(如 Log4j、序列化漏洞修复)
- 生产环境建议通过镜像扫描工具(如 Trivy、Clair)检查基础镜像与 IBM SDK 的潜在风险
权限管理
- Ubuntu 基础镜像默认包含 1001 非 root 用户,建议使用该用户运行应用(避免 root 权限泄露风险)
- 挂载主机目录时,需确保宿主机目录权限与容器用户 UID(1001)匹配(如 chown -R 1001:1001 ./jars)
许可信息
- Dockerfile 及关联脚本:遵循 Apache License 2.0 许可协议
- IBM SDK, Java Technology Edition:
- Java 8:遵循 International License Agreement for Non-Warranted Programs
- Java 11:遵循相同许可协议,详情见 IBM developerWorks 页面
- 基础镜像软件:Ubuntu/Alpine 镜像中包含的组件(如 Bash、musl)遵循各自开源许可(如 MIT、Apache)
使用前请确保遵守所有包含软件的许可条款,商业场景需联系 IBM 确认许可细节。
更多相关 Docker 镜像与资源
以下是 ibmjava 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
- library/ibm-semeru-runtimes Docker 镜像说明(IBM Semeru OpenJ9 运行时)
- library/openjdk Docker 镜像说明
- cimg/openjdk Docker 镜像说明(OpenJDK 运行时,CI/CD 优化版本,适合持续集成环境)
- amd64/openjdk Docker 镜像说明(OpenJDK 运行时,AMD64 架构版本)
- jenkins/openjdk Docker 镜像说明(Jenkins OpenJDK,CI/CD 构建环境)
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
DockerHub 原生拉取命令
镜像拉取常见问题
功能
错误码
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务