ppc64le/open-liberty本镜像为 open-liberty 官方镜像 的 ppc64le 架构专用版本,基于 Ubuntu 操作系统构建。Open Liberty 是一款轻量级、模块化的 Java 运行时环境,专为构建和运行云原生 Java 应用程序(如微服务、Java EE/ Jakarta EE 应用)设计。本镜像适用于需要在 ppc64le 架构环境中部署 Java 应用的场景,提供开箱即用的运行时支持和灵活的定制能力。
注意:如需基于 Universal Base Image (UBI) 的变体,请参考 openliberty/open-liberty 仓库。
beta(预览版)、kernel-slim(精简核心版)和 full(完整功能版)等多种变体,适应不同场景:
kernel-slim:仅包含 Liberty 核心组件,无额外运行时特性,需通过配置动态添加所需功能,适用于构建最小化应用镜像。full:预安装所有 Liberty 特性,开箱即用,适合快速部署和开发测试。USER 1001(非 root 用户,属于 0 组)运行,增强容器安全性。springBootUtility 工具,支持 Spring Boot 应用的瘦化部署和依赖缓存,优化镜像大小和启动速度。configure.sh、features.sh 等工具简化构建流程。amd64、arm64v8、s390x 等多种架构。beta:基于 OpenJDK 8 的预览版beta-java11:基于 OpenJDK 11 的预览版beta-java17:基于 OpenJDK 17 的预览版kernel-slim、kernel-slim-java8-openj9:Java 8 + OpenJ9 虚拟机kernel-slim-java11-openj9:Java 11 + OpenJ9 虚拟机kernel-slim-java17-openj9:Java 17 + OpenJ9 虚拟机full、full-java8-openj9、latest:Java 8 + OpenJ9 虚拟机(默认标签)full-java11-openj9:Java 11 + OpenJ9 虚拟机full-java17-openj9:Java 17 + OpenJ9 虚拟机包含版本号的标签(如 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支持按需加载功能组件(通过 server.xml 配置),kernel-slim 变体可通过 features.sh 脚本动态下载所需特性,最小化镜像体积。
默认以 UID 1001(组 ID 0)运行,所有 Open Liberty 访问的目录已预设权限,扩展镜像时需注意文件权限配置。
兼容 Java 8、11、17,满足不同应用的运行时需求,可通过标签选择特定 Java 版本。
提供 springBootUtility 工具,支持将 Spring Boot 胖 JAR 拆分为瘦应用和依赖缓存,加速部署和启动。
内置 XML 配置片段,可通过环境变量或构建参数启用会话缓存、监控等企业功能。
支持构建独立应用镜像、通过卷挂载配置/应用(开发场景)、只读模式运行等多种部署方式。
kernel-slim 变体构建最小化镜像,降低资源占用。dropins 目录实时更新应用)。full 变体进行功能验证,无需手动配置依赖。专为 ppc64le 架构优化,适用于基于该架构的服务器或云平台(如 IBM Power Systems)。
支持 Spring Boot 应用的高效部署,通过瘦化部署和依赖缓存优化镜像体积和启动速度。
镜像默认以非 root 用户 1001(组 0)运行。扩展镜像时,若需访问自定义目录,需临时切换至 root 配置权限:
dockerfileUSER root RUN mkdir -p /myapp && chown -R 1001:0 /myapp # 授予 1001 用户读写权限 USER 1001 # 切换回非 root 用户
chmod g+rx server.xml),确保组 0 有读/执行权限。--chown 参数(推荐):
dockerfileCOPY --chown=1001:0 server.xml /config/
dockerfileUSER root RUN chown 1001:0 /config/server.xml USER 1001
kernel-slim 构建最小化镜像dockerfileFROM 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 myapp:latest
full 镜像快速部署full 镜像已包含所有特性,无需运行 features.sh:
dockerfileFROM ppc64le/open-liberty:full-java11-openj9 COPY --chown=1001:0 server.xml /config/ COPY --chown=1001:0 myapp.war /config/dropins/ RUN configure.sh
consoledocker run -d -p 9080:9080 \ -v /local/path/myapp.war:/config/dropins/myapp.war \ ppc64le/open-liberty:full
consoledocker run -d -p 9080:9080 \ -v /local/path/server.xml:/config/server.xml \ -v /local/path/dropins:/config/dropins \ ppc64le/open-liberty:kernel-slim
通过构建参数或 configure.sh 脚本启用企业功能(如会话缓存),具体参考 官方文档。
dropins/spring)dockerfileFROM 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 spring-app
springBootUtility)将 Spring Boot 胖 JAR 拆分为瘦应用和依赖缓存,优化镜像体积:
dockerfile# 阶段 1:构建瘦应用和依赖缓存 FROM 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 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
默认情况下,镜像启动时会生成自签名证书(keystore.xml)。如需使用自定义密钥库,需禁用默认行为:
dockerfileENV KEYSTORE_REQUIRED "false"
将自定义密钥库文件复制到镜像,并在 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"/>
通过共享 classCache 目录加速 JVM 启动,适用于多容器部署:
console# 使用主机目录共享缓存 docker run -d -p 9080:9080 \ -v /host/path/classCache:/opt/ol/wlp/output/.classCache \ my-app-image # 或使用数据卷容器 docker run -v /opt/ol/wlp/output/.classCache --name cache-container ppc64le/open-liberty true docker run -d -p 9080:9080 --volumes-from cache-container my-app-image
需挂载临时文件系统到 /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
挂载本地 dropins 目录实时更新应用:
consoledocker run -d -p 9080:9080 -p 9443:9443 \ -v $(pwd)/dropins:/config/dropins \ ppc64le/open-liberty:full-java17-openj9
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:
ppc64le/open-liberty:<version>(默认变体)包含完整功能组件,适用于快速部署或需要完整特性集的场景。
ppc64le/open-liberty:<version>-slim(精简变体)仅包含核心组件,需通过 features.sh 动态下载所需特性,适用于构建最小化应用镜像。
Open Liberty 是开源版本,WebSphere Liberty 是其商业发行版,两者镜像高度兼容:
FROM 指令切换(如 FROM ppc64le/open-liberty 改为 FROM ppc64le/websphere-liberty)。/opt/ol,WebSphere Liberty 为 /opt/ibm;商业版本提供额外支持和功能。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务