当前位置: 首页 > news >正文

创建一个Oracle版本的JDK的Docker镜像

背景说明

OpenJDK 和Oracle JDK 一般情况下我们选择OpenJDK,两者针对大部分场景都可以满足,有些地方例如反射技术获得某些包路径下的类对象等,有时候选择OpenJDK会导致空指针异常。

两者在底层实现方面有部分区别。

创建镜像

这里是Linux环境,假设我们在路径 /apps/jdk 目录下:

下载 JDK17 jar jdk-17.0.11_linux-x64_bin.tar.gz 到该目录下,

  1. 创建Dockerfile
# 使用一个轻量级的 Linux 基础镜像
FROM ubuntu:24.04# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk-17
ENV PATH=$JAVA_HOME/bin:$PATH# 创建目录并解压 JDK
WORKDIR /usr/local
COPY jdk-17.0.11_linux-x64_bin.tar.gz .
RUN tar -xzf jdk-17.0.11_linux-x64_bin.tar.gz && \mv jdk-17.0.11 jdk-17 && \rm jdk-17.0.11_linux-x64_bin.tar.gz# 验证 JDK 安装
RUN java -version# 设置默认工作目录
WORKDIR /
  1. 创建镜像
docker build -t oracle-jdk:17.0.11 .
  1. 测试镜像
    假设要运行一个SpringBoot的应用容器,
    当前目录下 ./target/yourSpringBoot.jar 创建容器,
    Dockerfile如下:
# 使用创建的Oracle JDK镜像  
FROM oracle-jdk:17.0.11
# 设置时区  
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo 'Asia/Shanghai' > /etc/timezone  
# 设置环境变量  
ENV LANG=C.UTF-8
# 将应用程序 JAR 文件复制到镜像中  
COPY target/yourSpringBoot.jar app.jar  
# 设置入口点  
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
  1. 导出镜像
    导出镜像用于其他服务器上
docker save -o oracle-jdk.tar oracle-jdk:17.0.11

注意: 要下载 oracle-jdk.tar 可能权限不足,记得 chmod 644 oracle-jdk.tar

  1. 导入镜像
docker load -i oracle-jdk.tar
http://www.lryc.cn/news/436367.html

相关文章:

  • Harmony OS DevEco Studio 如何导入第三方库(以lottie为例)?-- HarmonyOS自学2
  • JAVA数据导出为Excel
  • 【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
  • 第十五届蓝桥杯图形化省赛题目及解析
  • linux下NTP服务器实战(chrony软件)
  • Java设计模式之命令模式介绍和案例示范
  • Leetcode面试经典150题-74.搜索二维矩阵
  • 【数字集成电路与系统设计】基本的组合逻辑电路
  • 11. 建立你的第一个Web3项目
  • 衡石分析平台使用手册-容器部署
  • 静态库,动态库以及makefile基础
  • Python基础语法(1)上
  • 使用 Python/java/go做一个微信机器人
  • 【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译
  • 测评造假?Mistral首个多模态模型Pixtral 12B发布
  • 【Java-简单练习题】
  • Notepad++ 下载安装教程
  • shader 案例学习笔记之smoothstep函数
  • 大模型的第一个杀手级应用场景出来了
  • 不允许有程序员不知道这款AI代码扩写工具
  • java 的list集合排序自定义元素
  • 【数学建模】2024数学建模国赛经验分享
  • Scala尾递归解决爆栈问题
  • 【观察者】设计模式:构建灵活且响应式的软件系统
  • 开源网安斩获CCIA中国网络安全创新创业大赛总决赛三等奖
  • 进程的同步与互斥
  • 基础的八股
  • 使用Python从头开始创建PowerPoint演示文稿
  • 【C++ Primer Plus习题】15.4
  • Pipeline Scheduling(UVA 690)