ibmjava

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 服务、微服务、云原生应用)的开发与部署,尤其擅长高并发、低内存占用场景。

134 次收藏下载次数: 0状态:Docker 官方镜像维护者:Docker 官方镜像仓库类型:镜像最近更新:1 个月前
让 AI 帮你使用轩辕镜像?

如果你使用 DeepSeek元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AIDeepSeek 的深度思考模式,不推荐豆包 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 运行时与开发工具包容器化版本,核心特性如下:

  1. 底层 JVM 优势:基于 Eclipse OpenJ9 JVM(由 IBM 贡献至 Eclipse 基金会),具备低内存占用(比传统 HotSpot JVM 节省 30%+ 内存)、快速启动(启动时间缩短 50%+)、类数据共享(Class Data Sharing)等企业级特性,适合大规模容器集群与微服务场景

  2. 三种核心变体

    • SDK(Software Developers Kit):含 Java 编译器(javac)、调试工具(jdb)及完整类库,满足开发与构建需求
    • JRE(Java Runtime Environment):仅含运行时组件,无编译器,体积小于 SDK,适合生产环境运行已编译应用
    • SFJ(Small Footprint JRE):轻量版 JRE,移除云环境非必需组件(如 Java 控制面板),磁盘与内存占用进一步降低,专为云原生应用设计
  3. 基础镜像适配

    • Ubuntu 基础:默认选项,基于 glibc 库,兼容性强,支持通过 apt 安装额外依赖
    • Alpine 基础:非 IBM 官方支持的操作系统,但体积极轻(如 SFJ 镜像仅 101MB,比 Ubuntu 版小 50%+),需额外安装 glibc(IBM SDK 依赖)
  4. 生态兼容性:是 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):

bash
docker 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 镜像,适用于 不同场景 等不同场景:

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面

轩辕镜像加速拉取命令点我查看更多 ibmjava 镜像标签

docker pull docker.xuanyuan.run/ibmjava:<标签>

DockerHub 原生拉取命令

docker pull ibmjava:<标签>

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

专业版 · 高速稳定拉取镜像
50GB 仅 ¥7/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告