本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

本镜像由epicsoft LLC管理并持续更新,提供基于官方镜像构建的OpenJDK JDK(Java开发工具包)和JRE(Java运行时环境)Docker镜像。JDK版本适用于Java应用的构建环境(如CI/CD流水线),JRE版本适用于Java应用的运行时环境,二者均基于轻量级Alpine Linux系统,确保镜像体积小、资源占用低。
alpine官方镜像,JDK镜像基于docker:dind(Docker-in-Docker)间接依赖Alpine,均继承Alpine Linux的轻量特性。ca-certificates(证书支持)、ttf-dejavu(字体支持);jq(JSON处理工具,便于构建流程中的数据解析)。| 镜像标签组 | 基础镜像 | Java版本 | Alpine包版本 | 更新周期 |
|---|---|---|---|---|
jdk jdk21 jdk21.0.8 jdk21-latest jdk-latest | docker:28.3.2-dind(间接基于alpine:3.22.1) | JDK 21.0.8 | openjdk21-jdk-21.0.8_p9-r0 | 每周 |
jre jre21 jre21.0.8 jre21-latest jre-latest latest | alpine:3.22.1 | JRE 21.0.8 | openjdk21-jre-21.0.8_p9-r0 | 每周 |
jdk17 jdk17.0.16 jdk17-latest | docker:28.3.2-dind(间接基于alpine:3.22.1) | JDK 17.0.16 | openjdk17-jdk-17.0.16_p8-r0 | 每周 |
jre17 jre17.0.16 jre17-latest | alpine:3.22.1 | JRE 17.0.16 | openjdk17-jre-17.0.16_p8-r0 | 每周 |
jdk11 jdk11.0.28 jdk11-latest | docker:28.3.2-dind(间接基于alpine:3.22.1) | JDK 11.0.28 | openjdk11-jdk-11.0.28_p6-r0 | 每周 |
jre11 jre11.0.28 jre11-latest | alpine:3.22.1 | JRE 11.0.28 | openjdk11-jre-11.0.28_p6-r0 | 每周 |
注:旧版本可查看GitLab仓库子目录:OpenJDK 11、OpenJDK 17、OpenJDK 21。
jdk*标签)docker:dind特性,在容器内构建其他Docker镜像(需挂载Docker socket)。jre*标签、latest)使用JDK镜像在GitLab CI中构建Java项目并推送Docker镜像:
# .gitlab-ci.yml stages: - build variables: VERSION: "1.0.0" exampleProjectBuild: stage: build image: epicsoft/openjdk:jdk-latest # 使用最新JDK镜像 services: - docker:dind # 启用Docker-in-Docker服务 variables: DOCKER_IMAGE: $CI_REGISTRY:$VERSION # 目标镜像地址 JAVA_JAR_PATH: build/libs # 构建产物路径 before_script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # 登录私有仓库 after_script: - docker logout $CI_REGISTRY # 登出仓库 script: - ./gradlew build --warning-mode all # 执行Gradle构建 # 构建并推送应用镜像(基于JRE运行时) - docker build -t $DOCKER_IMAGE . --build-arg JAR_FILE=$JAVA_JAR_PATH/exampleProject-${VERSION}.jar --build-arg VERSION=$VERSION --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') - docker push $DOCKER_IMAGE
使用docker run命令启动Java应用:
# 运行Spring Boot应用(假设当前目录有app.jar) docker run -d \ --name java-app \ -p 8080:8080 \ # 映射端口(应用端口:容器端口) -v $(pwd)/app.jar:/app.jar \ # 挂载本地jar包到容器 -e JAVA_OPTS="-Xmx512m -Xms256m" \ # 自定义JVM参数 -e JAVA_TIMEZONE="Asia/Shanghai" \ # 设置时区为上海 epicsoft/openjdk:jre-latest # 使用最新JRE镜像
通过docker-compose.yml管理多服务应用:
# docker-compose.yml version: '3.8' services: java-app: image: epicsoft/openjdk:jre-latest # JRE运行时镜像 container_name: java-app restart: always # 自动重启 ports: - "8080:8080" # 端口映射 volumes: - ./app.jar:/app.jar # 挂载应用jar包 environment: - JAVA_SERVER="-server" # 启用服务器VM模式 - JAVA_DOCKER="-XX:+UseContainerSupport -XX:MaxRAMPercentage=70" # 容器内存配置(限制70%可用RAM) - JAVA_SECURITY="-Djava.security.egd=file:/dev/./urandom" # 优化随机数生成 - JAVA_ENCODING="-Dfile.encoding=UTF-8" # 设置文件编码 - JAVA_TIMEZONE="-Duser.timezone=Asia/Shanghai" # 时区配置 - JAVA_ERROR="-XX:+ExitOnOutOfMemoryError" # OOM时退出容器 - JAVA_OPTS="-Xmx1g" # 自定义JVM参数(如堆内存)
启动命令:docker-compose up -d
创建自定义应用镜像,继承本JRE镜像:
# Dockerfile FROM epicsoft/openjdk:jre-latest # 基础镜像:最新JRE # 构建参数(可通过docker build --build-arg传入) ARG VERSION="development" ARG BUILD_DATE="development" # 镜像元数据 LABEL org.label-schema.name="exampleProject" \ org.label-schema.description="Example Java application" \ org.label-schema.version="$VERSION" \ org.label-schema.schema-version="1.0" \ org.label-schema.build-date="$BUILD_DATE" # JVM配置环境变量(可在运行时通过-e覆盖) ENV JAVA_SERVER="-server" \ # 启用服务器VM模式(优化长时间运行应用) JAVA_DOCKER="-XX:+UseContainerSupport -XX:MaxRAMPercentage=80" \ # 容器内存支持,使用80%可用RAM JAVA_SECURITY="-Djava.security.egd=file:/dev/./urandom" \ # 加速随机数生成(避免阻塞) JAVA_ENCODING="-Dfile.encoding=UTF-8" \ # 默认UTF-8编码 JAVA_TIMEZONE="-Duser.timezone=GMT" \ # 默认时区GMT JAVA_ERROR="-XX:+ExitOnOutOfMemoryError" \ # 内存溢出时退出容器 JAVA_OPTS="" # 用户自定义JVM参数(运行时追加) # 复制应用jar包(通过--build-arg JAR_FILE指定路径) ARG JAR_FILE COPY $JAR_FILE /app.jar # 暴露应用端口 EXPOSE 8080 # 启动命令(拼接所有JVM参数并执行jar包) ENTRYPOINT [ "sh", "-c", "java $JAVA_SERVER $JAVA_DOCKER $JAVA_SECURITY $JAVA_ENCODING $JAVA_TIMEZONE $JAVA_ERROR $JAVA_OPTS -jar /app.jar" ]
构建命令:
docker build -t my-java-app:1.0 --build-arg JAR_FILE=./build/libs/app.jar --build-arg VERSION=1.0 --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') .
JRE镜像支持通过环境变量自定义JVM行为,默认值及作用如下:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
JAVA_SERVER | -server | 启用服务器VM模式(优化吞吐量和长时间运行) |
JAVA_DOCKER | -XX:+UseContainerSupport -XX:MaxRAMPercentage=80 | 容器支持:自动检测容器内存限制,使用80%可用RAM |
JAVA_SECURITY | -Djava.security.egd=file:/dev/./urandom | 指定随机数生成器(避免/dev/random阻塞) |
JAVA_ENCODING | -Dfile.encoding=UTF-8 | 设置默认文件编码为UTF-8 |
JAVA_TIMEZONE | -Duser.timezone=GMT | 设置JVM时区(如Asia/Shanghai) |
JAVA_ERROR | -XX:+ExitOnOutOfMemoryError | JVM内存溢出时立即退出容器 |
JAVA_OPTS | 空 | 用户自定义JVM参数(如-Xmx1g -Xms512m) |
本镜像使用MIT许可证(仅适用于epicsoft LLC创建的文件)。第三方软件(如OpenJDK、Alpine Linux)可能遵循其各自的许可证。

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429