ppc64le/open-liberty Docker 镜像
基于Ubuntu的多架构Open Liberty镜像,用于运行Java EE和MicroProfile应用,支持多种处理器架构。
Open Liberty (ppc64le) Docker 镜像文档
1. 镜像概述和主要用途
本镜像为 https://hub.docker.com/_/open-liberty 的 ppc64le 架构专用版本,基于 Ubuntu 操作系统构建。Open Liberty 是一款轻量级、模块化的 Java 运行时环境,专为构建和运行云原生 Java 应用程序(如微服务、Java EE/ Jakarta EE 应用)设计。本镜像适用于需要在 ppc64le 架构环境中部署 Java 应用的场景,提供开箱即用的运行时支持和灵活的定制能力。
注意:如需基于 Universal Base Image (UBI) 的变体,请参考 https://hub.docker.com/r/openliberty/open-liberty/。
2. 核心功能和特性
- 多 Java 版本支持:提供 Java 8、11、17 运行时环境,满足不同应用的兼容性需求。
- 镜像变体:包含
beta(预览版)、kernel-slim(精简核心版)和full(完整功能版)等多种变体,适应不同场景:kernel-slim:仅包含 Liberty 核心组件,无额外运行时特性,需通过配置动态添加所需功能,适用于构建最小化应用镜像。full:预安装所有 Liberty 特性,开箱即用,适合快速部署和开发测试。
- 非 root 运行:默认以
USER 1001(非 root 用户,属于0组)运行,增强容器安全性。 - Spring Boot 支持:内置
springBootUtility工具,支持 Spring Boot 应用的瘦化部署和依赖缓存,优化镜像大小和启动速度。 - 企业级功能:可通过配置启用会话缓存、监控等企业级特性,并支持自定义密钥库/信任库。
- 灵活的扩展性:支持通过 Dockerfile 扩展,自定义配置、添加应用和依赖,并提供
configure.sh、features.sh等工具简化构建流程。 - 架构兼容性:专为 ppc64le 架构优化,同时官方镜像支持
amd64、arm64v8、s390x等多种架构。
3. 支持的标签
3.1 Beta 版本
beta:基于 OpenJDK 8 的预览版beta-java11:基于 OpenJDK 11 的预览版beta-java17:基于 OpenJDK 17 的预览版
3.2 Kernel-slim 版本(精简核心版)
kernel-slim、kernel-slim-java8-openj9:Java 8 + OpenJ9 虚拟机kernel-slim-java11-openj9:Java 11 + OpenJ9 虚拟机kernel-slim-java17-openj9:Java 17 + OpenJ9 虚拟机
3.3 Full 版本(完整功能版)
full、full-java8-openj9、latest:Java 8 + OpenJ9 虚拟机(默认标签)full-java11-openj9:Java 11 + OpenJ9 虚拟机full-java17-openj9:Java 17 + OpenJ9 虚拟机
3.4 特定版本标签
包含版本号的标签(如 25.0.0.6、25.0.0.9、25.0.0.10),格式为 <版本>-<变体>-java<版本>-openj9,例如:
25.0.0.10-kernel-slim-java17-openj925.0.0.10-full-java8-openj9
4. 核心功能和特性
4.1 模块化架构
支持按需加载功能组件(通过 server.xml 配置),kernel-slim 变体可通过 features.sh 脚本动态下载所需特性,最小化镜像体积。
4.2 非 root 安全运行
默认以 UID 1001(组 ID 0)运行,所有 Open Liberty 访问的目录已预设权限,扩展镜像时需注意文件权限配置。
4.3 多 Java 版本支持
兼容 Java 8、11、17,满足不同应用的运行时需求,可通过标签选择特定 Java 版本。
4.4 Spring Boot 优化
提供 springBootUtility 工具,支持将 Spring Boot 胖 JAR 拆分为瘦应用和依赖缓存,加速部署和启动。
4.5 企业级特性支持
内置 XML 配置片段,可通过环境变量或构建参数启用会话缓存、监控等企业功能。
4.6 灵活的部署模式
支持构建独立应用镜像、通过卷挂载配置/应用(开发场景)、只读模式运行等多种部署方式。
5. 使用场景和适用范围
5.1 生产环境部署
- 构建包含应用和依赖的独立镜像,用于生产环境中稳定运行 Java 应用。
- 适合微服务架构,通过
kernel-slim变体构建最小化镜像,降低资源占用。
5.2 开发与测试
- 通过卷挂载本地代码/配置,快速迭代开发(如挂载
dropins目录实时更新应用)。 - 使用
full变体进行功能验证,无需手动配置依赖。
5.3 ppc64le 架构环境
专为 ppc64le 架构优化,适用于基于该架构的服务器或云平台(如 IBM Power Systems)。
5.4 Spring Boot 应用托管
支持 Spring Boot 应用的高效部署,通过瘦化部署和依赖缓存优化镜像体积和启动速度。
6. 详细使用方法和配置说明
6.1 镜像用户与权限配置
6.1.1 默认用户
镜像默认以非 root 用户 1001(组 0)运行。扩展镜像时,若需访问自定义目录,需临时切换至 root 配置权限:
dockerfileUSER root RUN mkdir -p /myapp && chown -R 1001:0 /myapp # 授予 1001 用户读写权限 USER 1001 # 切换回非 root 用户
6.1.2 文件权限设置
- 复制前设置权限:在宿主机修改文件权限(如
chmod g+rx server.xml),确保组0有读/执行权限。 - 复制时设置权限:使用 Docker 17.09+ 的
--chown参数(推荐):dockerfileCOPY --chown=1001:0 server.xml /config/ - 复制后设置权限(不推荐,会增加镜像层):
dockerfile
USER root RUN chown 1001:0 /config/server.xml USER 1001
6.2 构建应用镜像(推荐)
6.2.1 使用 kernel-slim 构建最小化镜像
dockerfileFROM docker.xuanyuan.run/ppc64le/open-liberty:kernel-slim-java17-openj9 # 复制应用配置(声明所需特性) COPY --chown=1001:0 server.xml /config/ # 下载 server.xml 中声明的特性(仅 kernel-slim 支持) RUN features.sh # 复制应用包 COPY --chown=1001:0 myapp.war /config/dropins/ # 应用配置并优化运行时(处理临时修复、缓存等) RUN configure.sh
构建并运行:
consoledocker build -t myapp:latest . docker run -d -p 9080:9080 docker.xuanyuan.run/myapp:latest
6.2.2 使用 full 镜像快速部署
full 镜像已包含所有特性,无需运行 features.sh:
dockerfileFROM docker.xuanyuan.run/ppc64le/open-liberty:full-java11-openj9 COPY --chown=1001:0 server.xml /config/ COPY --chown=1001:0 myapp.war /config/dropins/ RUN configure.sh
6.3 使用卷挂载配置(开发场景)
6.3.1 挂载应用包
consoledocker run -d -p 9080:9080 \ -v /local/path/myapp.war:/config/dropins/myapp.war \ docker.xuanyuan.run/ppc64le/open-liberty:full
6.3.2 挂载完整配置目录
consoledocker run -d -p 9080:9080 \ -v /local/path/server.xml:/config/server.xml \ -v /local/path/dropins:/config/dropins \ docker.xuanyuan.run/ppc64le/open-liberty:kernel-slim
6.4 启用企业功能
通过构建参数或 configure.sh 脚本启用企业功能(如会话缓存),具体参考 https://github.com/openliberty/ci.docker#enterprise-functionality。
6.5 Spring Boot 应用部署
6.5.1 基础部署(复制 JAR 到 dropins/spring)
dockerfileFROM docker.xuanyuan.run/ppc64le/open-liberty:kernel-slim-java17-openj9 COPY --chown=1001:0 server.xml /config/ # server.xml 需启用 springBoot 特性 COPY --chown=1001:0 my-spring-app.jar /config/dropins/spring/ RUN configure.sh
构建并运行:
consoledocker build -t spring-app . docker run -d -p 9080:9080 docker.xuanyuan.run/spring-app
6.5.2 瘦化部署(使用 springBootUtility)
将 Spring Boot 胖 JAR 拆分为瘦应用和依赖缓存,优化镜像体积:
dockerfile# 阶段 1:构建瘦应用和依赖缓存 FROM docker.xuanyuan.run/ppc64le/open-liberty:kernel-slim-java17-openj9 as staging COPY --chown=1001:0 my-spring-app.jar /staging/fat.jar RUN springBootUtility thin \ --sourceAppPath=/staging/fat.jar \ --targetThinAppPath=/staging/thin.jar \ --targetLibCachePath=/staging/lib.index.cache # 阶段 2:构建最终镜像 FROM docker.xuanyuan.run/ppc64le/open-liberty:kernel-slim-java17-openj9 COPY --chown=1001:0 server.xml /config/ COPY --from=staging /staging/lib.index.cache /lib.index.cache # 复制依赖缓存 COPY --from=staging /staging/thin.jar /config/dropins/spring/ RUN configure.sh
6.6 密钥库/信任库配置
6.6.1 禁用默认密钥库
默认情况下,镜像启动时会生成自签名证书(keystore.xml)。如需使用自定义密钥库,需禁用默认行为:
dockerfileENV KEYSTORE_REQUIRED "false"
6.6.2 自定义密钥库
将自定义密钥库文件复制到镜像,并在 server.xml 中配置:
dockerfileCOPY --chown=1001:0 my-keystore.jks /config/resources/security/
在 server.xml 中添加:
xml<keyStore id="defaultKeyStore" location="${server.config.dir}/resources/security/my-keystore.jks" password="mypass"/>
6.7 IBM JRE 类数据共享
通过共享 classCache 目录加速 JVM 启动,适用于多容器部署:
console# 使用主机目录共享缓存 docker run -d -p 9080:9080 \ -v /host/path/classCache:/opt/ol/wlp/output/.classCache \ docker.xuanyuan.run/my-app-image # 或使用数据卷容器 docker run -v /opt/ol/wlp/output/.classCache --name cache-container docker.xuanyuan.run/ppc64le/open-liberty true docker run -d -p 9080:9080 --volumes-from cache-container docker.xuanyuan.run/my-app-image
6.8 只读模式运行
需挂载临时文件系统到 /opt/ol/wlp/output 和 /logs(Open Liberty 运行时写入目录):
consoledocker run -d -p 9080:9080 \ --read-only \ --tmpfs /opt/ol/wlp/output \ --tmpfs /logs \ -v /config # 挂载可写卷存储配置(如密钥库) ppc64le/open-liberty:full
7. Docker 部署方案示例
7.1 基础运行命令(开发场景)
挂载本地 dropins 目录实时更新应用:
consoledocker run -d -p 9080:9080 -p 9443:9443 \ -v $(pwd)/dropins:/config/dropins \ docker.xuanyuan.run/ppc64le/open-liberty:full-java17-openj9
7.2 docker-compose 配置(生产场景)
yamlversion: '3.8' services: app: build: . # 基于当前目录 Dockerfile 构建 ports: - "9080:9080" restart: always volumes: - app-config:/config # 持久化配置 - class-cache:/opt/ol/wlp/output/.classCache # 共享类缓存 volumes: app-config: class-cache:
8. 镜像变体说明
8.1 ppc64le/open-liberty:<version>(默认变体)
包含完整功能组件,适用于快速部署或需要完整特性集的场景。
8.2 ppc64le/open-liberty:<version>-slim(精简变体)
仅包含核心组件,需通过 features.sh 动态下载所需特性,适用于构建最小化应用镜像。
9. 与 WebSphere Liberty 的关系
Open Liberty 是开源版本,WebSphere Liberty 是其商业发行版,两者镜像高度兼容:
- 可通过修改
FROM指令切换(如FROM ppc64le/open-liberty改为FROM ppc64le/websphere-liberty)。 - 差异点:Open Liberty 安装路径为
/opt/ol,WebSphere Liberty 为/opt/ibm;商业版本提供额外支持和功能。
10. 支持与反馈
- 维护者:https://github.com/OpenLiberty/ci.docker
- 问题反馈:https://github.com/OpenLiberty/ci.docker/issues
- 社区支持:Open Liberty 社区
11. 许可证信息
- 软件许可证:https://github.com/OpenLiberty/open-liberty/blob/master/LICENSE
- 镜像包含 Ubuntu 基础镜像及其他依赖软件,可能涉及其他许可证,详情参见 https://github.com/docker-library/repo-info/tree/master/repos/open-liberty。
ppc64le 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 open-liberty 镜像标签
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务