如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本仓库是https://github.com/docker-library/official-images#architectures-other-than-amd64%E7%9A%84%60open-liberty%60%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E7%9A%84%22%E6%AF%8F%E6%9E%B6%E6%9E%84%22%E4%BB%93%E5%BA%93%EF%BC%8C%E5%9F%BA%E4%BA%8EUbuntu%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%9E%84%E5%BB%BA%E3%80%82%E6%89%80%E6%9C%89%E9%95%9C%E5%83%8F%E9%BB%98%E8%AE%A4%E4%BD%BF%E7%94%A8%E9%9D%9Eroot%E7%94%A8%E6%88%B7%E8%BF%90%E8%A1%8C%EF%BC%8C%E6%97%A8%E5%9C%A8%E6%8F%90%E4%BE%9B%E8%BD%BB%E9%87%8F%E7%BA%A7%E3%80%81%E5%8F%AF%E6%89%A9%E5%B1%95%E7%9A%84Java%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%8E%AF%E5%A2%83%EF%BC%8C%E7%94%A8%E4%BA%8E%E9%83%A8%E7%BD%B2%E5%92%8C%E8%BF%90%E8%A1%8CJava EE、Jakarta EE及微服务应用。
注意:如需使用基于通用基础镜像(Universal Base Image)的变体,请参见https://hub.docker.com/r/openliberty/open-liberty/%E3%80%82
amd64、arm64v8、ppc64le、s390x(本仓库为s390x架构专用)USER 1001(组0)运行,降低容器权限风险。springBootUtility工具,支持Spring Boot应用的瘦应用打包和依赖缓存。kernel-slim构建仅包含必要特性的最小化应用镜像。full镜像快速启动开发或测试环境。以下为s390x架构镜像支持的主要标签及其对应的Dockerfile链接:
beta:基于Java 8 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/beta/Dockerfile.ubuntu.openjdk8beta-java11:基于Java 11 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/beta/Dockerfile.ubuntu.openjdk11beta-java17:基于Java 17 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/beta/Dockerfile.ubuntu.openjdk17kernel-slim、kernel-slim-java8-openj9:Java 8 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8kernel-slim-java11-openj9:Java 11 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11kernel-slim-java17-openj9:Java 17 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17full、full-java8-openj9、latest:Java 8 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/full/Dockerfile.ubuntu.openjdk8full-java11-openj9:Java 11 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/full/Dockerfile.ubuntu.openjdk11full-java17-openj9:Java 17 https://github.com/OpenLiberty/ci.docker/blob/95b408ba6272ada9708d6bf6b1ddffc5dbbbdb7d/releases/latest/full/Dockerfile.ubuntu.openjdk17如25.0.0.6-kernel-slim-java8-openj9、25.0.0.10-full-java17-openj9等,包含具体版本号,适合需要版本固定的生产环境。
镜像默认以非root用户1001(组0)运行。扩展镜像时如需访问额外目录,需临时切换至root用户调整权限:
dockerfileUSER root RUN mkdir -p /myFolder && chown -R 1001:0 /myFolder # 授予用户1001对/myFolder的权限 USER 1001 # 切换回非root用户
文件权限设置
通过COPY或ADD复制文件到镜像时,需确保文件可被用户1001或组0读写执行:
dockerfileCOPY --chown=1001:0 server.xml /config/ # 直接指定所有者为1001:0
bashchmod g+rx server.xml # 确保组0有读/执行权限
dockerfileUSER root RUN chown 1001:0 /config/server.xml USER 1001
推荐基于kernel-slim构建仅包含必要特性的应用镜像,步骤如下:
创建Dockerfile:
dockerfileFROM s390x/open-liberty:kernel-slim # 复制服务器配置(声明所需特性) COPY --chown=1001:0 server.xml /config/ # 下载server.xml中声明的特性(仅kernel-slim支持) RUN features.sh # 复制应用到dropins目录 COPY --chown=1001:0 Sample1.war /config/dropins/ # 应用配置、应用临时修复并优化运行时缓存 RUN configure.sh
构建镜像:
bashdocker build -t my-openliberty-app .
运行容器:
bashdocker run -d -p 9080:9080 my-openliberty-app
开发阶段可通过卷挂载动态加载配置和应用:
bash# 挂载应用WAR包到dropins目录 docker run -d -p 9080:9080 -p 9443:9443 \ -v /local/path/Sample1.war:/config/dropins/Sample1.war \ s390x/open-liberty:full # 挂载整个服务器配置目录 docker run -d -p 9080:9080 \ -v /local/path/server-config:/config \ s390x/open-liberty:full
通过Dockerfile中的ARG参数启用企业功能(如会话缓存、监控),由configure.sh脚本应用配置:
dockerfileFROM s390x/open-liberty:kernel-slim # 启用会话缓存和监控 ARG ENABLE_SESSION_CACHE=true ARG ENABLE_MONITORING=true COPY --chown=1001:0 server.xml /config/ RUN features.sh && configure.sh # configure.sh会应用ARG对应的XML片段
直接部署Spring Boot JAR
dockerfileFROM s390x/open-liberty:kernel-slim # 复制Spring Boot应用到dropins/spring目录(仅支持单个应用) COPY --chown=1001:0 hellospringboot.jar /config/dropins/spring/ COPY --chown=1001:0 server.xml /config/ # server.xml需启用springBoot-2.0特性 RUN configure.sh
构建瘦应用与依赖缓存(优化镜像体积)
dockerfile# 阶段1:生成瘦应用和依赖缓存 FROM s390x/open-liberty:kernel-slim as staging COPY --chown=1001:0 hellospringboot.jar /staging/fat.jar RUN springBootUtility thin \ --sourceAppPath=/staging/fat.jar \ --targetThinAppPath=/staging/thin.jar \ --targetLibCachePath=/staging/lib.index.cache # 阶段2:构建最终镜像 FROM s390x/open-liberty:kernel-slim 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
默认情况下,镜像会生成自签名证书并在/config/configDropins/defaults/keystore.xml中配置密钥库。如需禁用默认行为或使用自定义密钥库:
禁用默认密钥库生成:
dockerfileENV KEYSTORE_REQUIRED "false"
添加自定义密钥库:
dockerfileCOPY --chown=1001:0 mykeystore.jks /config/resources/security/ # 在server.xml或configDropins/defaults/keystore.xml中配置密钥库
通过共享类缓存文件加速JVM启动,步骤如下:
使用主机目录共享缓存:
bashdocker run -d -p 9080:9080 \ -v /host/path/classCache:/opt/ol/wlp/output/.classCache \ my-openliberty-app
使用数据卷容器共享缓存:
bash# 创建数据卷容器 docker run -v /opt/ol/wlp/output/.classCache --name classcache s390x/open-liberty true # 运行应用容器,挂载缓存卷 docker run -d -p 9080:9080 --volumes-from classcache my-openliberty-app
Liberty运行时需写入/opt/ol/wlp/output和/logs目录,只读模式下需将其挂载为临时文件系统:
bashdocker run -d -p 9080:9080 -p 9443:9443 \ --tmpfs /opt/ol/wlp/output --tmpfs /logs \ # 临时文件系统 -v /host/config:/config \ # 挂载配置目录(需可写,或预构建密钥库) --read-only \ s390x/open-liberty:full
bash# 启动完整版镜像,映射HTTP(9080)/HTTPS(9443)端口 docker run -d -p 9080:9080 -p 9443:9443 --name liberty s390x/open-liberty:full
创建docker-compose.yml:
yamlversion: '3.8' services: liberty-app: image: s390x/open-liberty:kernel-slim build: . # 基于当前目录Dockerfile构建 ports: - "9080:9080" - "9443:9443" volumes: - ./config:/config # 本地配置目录(开发用) - classcache:/opt/ol/wlp/output/.classCache # 类缓存卷 environment: - KEYSTORE_REQUIRED=true # 启用默认密钥库生成 volumes: classcache: # 命名卷,共享类缓存
启动服务:
bashdocker-compose up -d
| 环境变量 | 说明 | 默认值 |
|---|---|---|
KEYSTORE_REQUIRED | 是否生成默认密钥库配置(true/false) | true |
WebSphere Liberty是Open Liberty的商业发行版,两者镜像兼容,可通过修改FROM指令切换:
/opt/ol/opt/ibm切换示例:
dockerfile# FROM s390x/open-liberty:kernel-slim FROM s390x/websphere-liberty:kernel-slim # 切换为商业版
镜像中软件的许可证信息参见https://github.com/OpenLiberty/open-liberty/blob/master/LICENSE%E3%80%82
镜像可能包含基础系统(如Ubuntu)及依赖软件,其许可证信息可在https://github.com/docker-library/repo-info/tree/master/repos/open-liberty%E4%B8%AD%E6%9F%A5%E8%AF%A2%E3%80%82
使用前请确保符合所有包含软件的许可证要求。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


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