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

news/2024/9/18 10:32:02/ 标签: oracle, java, 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.ppmy.cn/news/1524689.html

相关文章

学生请假管理系统

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 学生请假管理系统拥有两种角色 管理员:班级管理、课程管理、学生管理、审核请假信息、导出请假单 学生:填写请假单、查看请假审核情况 1.1 背景描述 学生请假管…

centos/kali 操作不同(两处)

二进制包安装 centos7: rpm包 rpm -ivhkali: deban包 dpkg -i deb包 网络镜像源配置 centos7: 配置文件路径 /etc/yum.repos.d 配置镜像源,会生成 .repo为后缀的文件,文件内容格式: [后缀.repo四部----------------…

bug是什么意思

“Bug” 是指计算机程序或系统中的错误或缺陷,导致程序运行时产生意外行为、结果不正确或崩溃。 Bug的来源 “Bug”一词源于1940年代,当时的计算机是大型机械设备,某些问题是由于昆虫(Bug)进入机器导致的故障。虽然这…

讨论:无法访问不同网段的Kafka问题

问题 X同学:A网段的机器,访问B网段部署的Kafka集群,中间做了网络映射,映射成A网段可以访问的IP地址,A网段程序里配置bootstrap.servers就是这些可以访问的地址。但是最后发现还是无法访问,并且日志里看到了…

Golang | Leetcode Golang题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; func isSubsequence(s string, t string) bool {n, m : len(s), len(t)f : make([][26]int, m 1)for i : 0; i < 26; i {f[m][i] m}for i : m - 1; i > 0; i-- {for j : 0; j < 26; j {if t[i] byte(j a) {f[i][j] i} else {…

find_package命令的搜索顺序

find_package命令在CMake中有两种模式:模块模式(Module mode)和配置模式(Config mode)。这两种模式的搜索顺序如下: 模块模式: 首先,CMake会在CMAKE_MODULE_PATH变量指定的目录中搜索名为Find<PackageName>.cmake的文件。如果没有找到,CMake会在其自带的模块目录…

如何快速练习键盘盲打

盲打是指在不看键盘的情况下进行打字&#xff0c;这样可以显著提高打字速度和效率。以下是一些练习盲打的方法&#xff1a; 熟悉键盘布局&#xff1a;首先&#xff0c;你需要熟悉键盘上的字母和符号的位置。可以通过键盘图或者键盘贴纸来帮助记忆。 使用在线打字练习工具&…

为工程师构建生成式 AI 应用程序

作为全栈工程师&#xff0c;我们经常需要将后端和前端代码与 AI 模型集成。然而&#xff0c;访问这些模型一直是一项重大挑战。主要障碍之一是缺乏对开放和封闭模型的轻松访问。在 GitHub&#xff0c;我们正在打破访问障碍并推出GitHub Models。让您&#xff08;开发人员&#…

【mysql】mysql之优化

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

个人学习笔记7-3:动手学深度学习pytorch版-李沐

#深度学习# #人工智能# #神经网络# #计算机视觉# #python# 计算机视觉 13.7 单发多框检测&#xff08;SSD&#xff09; SSD模型主要由基础网络组成&#xff0c;其后是几个多尺度特征块。 SSD通过单神经网络来检测模型&#xff0c;以每个像素为中心的产生多个锚框&#xff0c…

HarmonyOS开发实战( Beta5.0)系统提供的接口实践规范

简介 在应用开发中&#xff0c;经常会调用系统提供的接口&#xff0c;比如读取本地文件、处理服务端数据等等。若对接口使用不合理&#xff0c;可能引起延迟、卡顿、丢帧等性能问题。本文以如下系统提供的接口为例&#xff0c;总结了使用中的注意事项。 ResourceManager的get…

“汉语新解” Prompt新高度,火爆的李继刚

“汉语新解” prompt 是由李继刚设计的一个用于启发人工智能模型进行创意性文本生成的指令模板。这个 prompt 的设计初衷是为了让AI能够以一种独特的方式解析和重新诠释常见的中文词汇&#xff0c;从而产生出具有深刻洞察力和幽默感的文本内容&#xff0c;仿佛是由鲁迅或林语堂…

2024.9.12

#1498. 换乘(transfer) 考虑建立多层图&#xff0c;对每个颜色都建一层图 将同一个节点之间建立权值为1的边 #1499. 游戏(game) 这是原Game with Strings 关键是考虑每个状态下的期望步数&#xff0c;状态计算很占空间&#xff0c;所以我们使用bitset优化即可 #1505. 赴京赶考…

网络安全工程师填补人才缺口

近年来&#xff0c;新兴技术如人工智能、5G和量子信息技术等的迅猛发展&#xff0c;极大地推动了互联网技术的革新。 然而&#xff0c;随之而来的网络安全威胁也日益增多&#xff0c;对国家、企业及个人安全构成了严重挑战。 网络安全问题就在我们身边&#xff0c;因此&#…

《C++初始化列表陷阱:谨慎前行,避免潜在风险》

一 在 C编程中&#xff0c;初始化列表是一个强大的工具&#xff0c;它允许在对象创建时直接初始化成员变量。然而&#xff0c;就像任何强大的工具一样&#xff0c;如果使用不当&#xff0c;初始化列表也可能会带来一些陷阱。在本文中&#xff0c;我们将深入探讨 C中的初始化列表…

MongoDB 的功能

MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统&#xff0c;具有高性能、可扩展性和灵活的存储结构。与传统的关系型数据库不同&#xff0c;MongoDB 使用 JSON 类似的 BSON&#xff08;Binary JSON&#xff09;格式存储数据&#xff0c;提供了对非结构化和半结构化数据…

如何在VUE3中使用函数式组件

在Vue 3中&#xff0c;函数式组件的概念与Vue 2相似&#xff0c;但实现方式有所不同。函数式组件是一种无状态、无实例的组件&#xff0c;它们只根据传入的props和context来渲染输出。在Vue 3中&#xff0c;你可以通过定义一个函数并返回一个渲染函数来使用函数式组件。但是&am…

Rust 简介与安装

文章目录 发现宝藏1. rust简介2. rust 下载安装2.1. 安装 Rust2.2. 创建你的第一个Rust项目2.3. 探索Rust的基本概念2.4. 学习资源 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】…

GO语言快速入门(比较乱)

一、环境安装 1、安装Go环境 1、官网下载 2、cmd-->go version 3、环境变量 GOROOT&#xff1a;go安装路径 GOPATH&#xff1a;go存放代码的路径 4、GOWorks新建三个文件 5、go env查看配置 2、安装编辑器 GoLand或者VSCode 3、HelloWorld package main //一个程序只有一个…

【前端面试】标记、绘画视频的某一帧

搜寻三方库 在前端开发中,Canvas 是一个强大的工具,可以用来创建图形、动画和各种视觉效果。为了简化和增强 Canvas 的使用,社区中出现了许多库。以下是一些主流的 Canvas 库及其特性和性能对比: Fabric.js: 概述:Fabric.js 是一个基于对象的 Canvas 库,提供了丰富的 A…