什么是Liberica JDK?
Liberica JDK是一款免费且100%开源的渐进式Java运行时,适用于现代Java部署。由BellSoft开发并提供支持,BellSoft是OpenJDK的主要贡献者。使用Liberica JDK进行应用开发具有以下特点:
- 灵活性:支持广泛的架构和操作系统,是适用于桌面、服务器、云和嵌入式用例的统一Java运行时。
- 成本和时间效益:基于Liberica Lite和Alpine Linux构建的容器体积小,可最小化部署时间并降低云支出。
- 安全性:通过Java SE规范的TCK验证,每次发布前均经过全面漏洞测试。CPU发布周期确保及时提供安全补丁和错误修复。
Liberica JDK被Spring推荐并使用作为Spring Native应用程序的端到端解决方案。BellSoft为全球各行各业的数百万开发人员和公司提供服务。更多信息,请访问[***]
如何选择最佳Java镜像?
我们编制了一个交互式方案,帮助您确定哪个BellSoft镜像最适合您的项目。
!如何选择最佳Java镜像
此镜像包含什么?
本仓库包含适用于Rocky Linux的Liberica JDK镜像,支持以下架构:
- x86_64 (amd64)
- aarch64 (ARM64)
标签指向Java版本(紧跟在操作系统名称之后)和支持的架构。镜像名称结构为X-Y,其中X是Java版本,Y是架构类型。如果名称中未包含架构类型,则默认支持AMD64和ARM64。'latest'标签指向最新版本。标签中包含'-cds'的镜像包含CDS(类数据共享)归档。
例如,https://hub.docker.com/layers/bellsoft/liberica-openjdk-rocky/8u432-7-x86_64/images/sha256-3e36546c8525d36a26bd6005eecb6c403db9a54b4d3ce9ca901c65609eb70544?context=explore%E6%98%AF%E9%80%82%E7%94%A8%E4%BA%8ERocky Linux、运行在AMD64架构上的Liberica JDK 8u432版本镜像。
标签
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/25/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/25/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/25/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/25/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/24/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/24/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/23/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/23/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/21/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/17/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/11/Dockerfile
- https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile, https://github.com/bell-sw/Liberica/blob/master/docker/repos/liberica-openjdk-rocky/8/Dockerfile
使用方法
基础使用
运行Liberica OpenJDK 17容器并检查版本:
docker run -it --rm bellsoft/liberica-openjdk-rocky:17 java -version
运行应用程序
可通过挂载卷运行应用程序:
docker run -it --rm -v /home/user/project/:/data bellsoft/liberica-openjdk-rocky:latest java -jar /data/MyApp.jar
特定版本选项
-
JDK 8u 版本*
LIBERICA_USE_LITE - 定义JDK内容。0表示保持JDK不变,1(默认)创建精简版镜像(移除演示、示例和源代码)。
-
JDK 11 和 JDK 17 版本**
LIBERICA_IMAGE_VARIANT - 镜像变体选项:
base - 包含java.base模块的服务器VM
base-minimal - 包含java.base模块的最小VM
lite(默认)- 最小占用空间的精简JDK
standard - 标准JDK
LIBERICA_VM - VM类型选项:
server(默认)- 添加server VM
client - 添加client VM
minimal - 添加minimal VM
all - 添加所有VM
Docker部署方案示例
1. 基础部署
dockerfile
FROM bellsoft/liberica-openjdk-rocky:17
WORKDIR /app
COPY target/app.jar /app/
CMD ["java", "-jar", "app.jar"]
构建并运行:
docker build -t my-app . && docker run -d -p 8080:8080 my-app
2. 使用环境变量自定义
dockerfile
FROM bellsoft/liberica-openjdk-rocky:17
ENV LIBERICA_IMAGE_VARIANT=standard
ENV LIBERICA_VM=server
WORKDIR /app
COPY target/app.jar /app/
CMD ["java", "-XX:+UseContainerSupport", "-jar", "app.jar"]
3. 使用CDS优化启动时间
dockerfile
FROM bellsoft/liberica-openjdk-rocky:17-cds
WORKDIR /app
COPY target/app.jar /app/
CMD ["java", "-jar", "app.jar"]
4. 多阶段构建减小镜像体积
dockerfile
# 构建阶段
FROM maven:3.8-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn package -DskipTests
# 运行阶段
FROM bellsoft/liberica-openjdk-rocky:17
WORKDIR /app
COPY --from=builder /app/target/app.jar .
CMD ["java", "-jar", "app.jar"]