【工作记录】openjdk-22基础镜像的构建

背景

近期使用到的框架底层都用的是springboot3.0+,要求jdk版本在17+甚至更高。

于是决定制作一个基于openjdk22的基础镜像,本文对这一过程进行记录。

作为记录的同时也希望能够帮助到需要的朋友。

期望效果

  1. 容器内可以正常使用java相关命令且版本是22
  2. 替换容器内的镜像源为aliyun的源
  3. 容器内的时区是东八区
  4. (非必须)容器内包含一些内置工具
  5. (非必须)添加一些字体文件

准备工作

  1. 安装docker环境
  2. 下载openjdk22压缩包

实现

1、新建目录,并新建Dockerfile文件

mkdir -p /opt/docker/openjdk22
cd /opt/docker/openjdk22
vim Dockerfile

2、编写Dockerfile

FROM debian:buster-slim# 更换为阿里云的Debian镜像源
RUN sed -i 's/http:\/\/archive\.debian\.org\/debian/http:\/\/mirrors\.aliyun\.com\/debian/g' /etc/apt/sources.list && \sed -i 's/http:\/\/security\.debian\.org\/debian-security/http:\/\/mirrors\.aliyun\.com\/debian-security/g' /etc/apt/sources.list && \sed -i 's/http:\/\/deb\.debian\.org\/debian/http:\/\/mirrors\.aliyun\.com\/debian/g'  /etc/apt/sources.list
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# 复制jdk安装包
ADD openjdk-22_linux-x64_bin.tar.gz /opt
# 设置环境变量
ENV JAVA_HOME=/opt/jdk-22
ENV PATH=$JAVA_HOME/bin:$PATH
# 清理无用的系统文件和缓存
RUN apt-get update && \apt-get clean && \rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# 验证Java版本
RUN java -version

3、构建镜像并上传到镜像仓库

docker build -t 172.16.10.205:5000/openjdk22 .

等待构建完成后可以使用docker images|grep openjdk22查看结果。

查看镜像构建结果

构建完成后执行如下命令上传到镜像仓库:

docker push 172.16.10.205:5000/openjdk22

注意:

  1. 步骤3命令中的172.16.10.205:5000是自建的私有docker镜像仓库的地址,请替换成实际仓库地址
  2. 上述构建镜像时使用的基础镜像是debian:buster-slim 版本,对应debian10,同时slim系统相对更轻量,没有过多的附加软件,所以最终打包的镜像只有418M(不敢说最小,但相对那些动辄上G的来说已经很浓缩了)。
  3. 上述构建镜像的Dockerfile中有个引用的文件openjdk-22_linux-x64_bin.tar.gz,请根据实际情况下载并放在Dockerfile同级目录即可。

4、验证

其实上述Dockerfile中最后一行命令已经打印了java -verison, 正常构建完成的话应该会在最后打印如下内容:

查看java版本

​ 另外一种方式就是运行刚才生成的镜像并进入到容器内执行java -version命令,具体命令是: docker run -it 043e1978d383 bash, 进入容器内部后执行java -version ,看到上述截图中的输出即为正常。

​ 注意: 上述命令中的043e1978d383是通过docker images|grep openjdk-22查询出来的镜像ID,请替换为实际镜像ID后执行。

总结

​ 本文简单记录了构建openjdk22基础镜像的过程,希望能够帮助到需要的朋友。

​ 针对以上内容有任何疑问或者建议欢迎评论区留言。

创作不易,欢迎一键三连~~~~

PS: 最近在阅读《Java高并发核心编程卷一》书籍,后续会推出读书笔记系列,欢迎持续关注。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3017560.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈操作系统中的重要概念——线程(3)——设计模式

文章目录 一、什么是设计模式?二、单例模式2.1、饿汉模式2.2、懒汉模式2.3、多线程情况下调用 饿汉模式与懒汉模式 谁是安全的??(重点) 三、工厂模式 一、什么是设计模式? 设计模式就相当于菜谱&#xff0…

30万买智驾车,选特斯拉还是华为?

文 | AUTO芯球 作者 | 雷歌 我真是佩服马斯克, 一趟24小时的北京出差,就解除了Model车系进入机关单位禁令的问题, 也打开了特斯拉FSD完全自动驾驶进入中国市场的大门, 给我我一天时间,估计一部剧都追不完&#xf…

贡献思维,CF1644E. Expand the Path

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1644E - Codeforces 二、解题报告 1、思路分析 很容易想明白被…

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取 暗区突围是一款很火爆的第一人称射击网游,现在终于要上线PC端啦!小伙伴们是不是已经迫不及待想要体验电脑上的硬核射击快感了?暗区突围pc端资格已经陆续发放,想要参与PC端…

Adobe-Premiere-CEP 扩展 入门-视频剪辑-去气口插件-Silence Remover

短视频,这两年比较火,不要再问为什么用Premiere,非常难用,为什么不用某影,某些国内软件非常接地气简单,又例如某音资深的视频短编辑就很好用了。。。 Premiere二次开发调试难,不如自己搞个cons…

PNG、JPG如何转Dicom(dcm),那些年我踩过的坑(Python版)

Dicom作为医学影像的常见数据格式,是每个深耕于医疗AI的同学无法跳过的一个坑。虽然我只是一名扎根于算法部署方面的小白。但是也不可避免地接触到这类数据。这不,最近接到算法同学给出的算法,需要我自己找公开数据集进行测试。可是Dicom数据…

NFCP502-W05 电流数据是多少安培?

YOKOGAWA NFCP502-W05 是一款由横河电机(Yokogawa Electric Corporation)生产的微型断路器(Microcircuit Breaker,简称 MCB)。 横河电机是一家日本的跨国公司,专注于自动化和控制系统、仪器和其他相关设备…

【计算机科学速成课】笔记三

文章目录 17.集成电路真空管时代晶体管时代集成电路时代印刷电路板时代光刻时代 17.集成电路 Over the past six episodes, we delved into software, 过去 6 集我们聊了软件 \N 从早期编程方式到现代软件工程 from early programming efforts to modern software engineerin…

Linux进程地址空间第三讲

至今为止, 我们所学到的大多数的知识, 包括语言, 数据结构, 动静态库等等的 都是在下面这3G, 也就是用户空间里的(进程等待, 信号之类的与内核有关的是在上面那1G里的) 所以对于我们来说, 我们…

NXP i.MX8系列平台开发讲解 - 1.1 导读前言

专栏文章目录传送门:返回专栏目录 文章目录 目录 1. 本专辑介绍 2. 学习本专辑作用 3.关于作者 1. 本专辑介绍 本专辑将会介绍Linux 驱动开发,Android BSP 驱动涉及HAL层调试,适用于嵌入式软件开发人员,和有兴趣向该方向发展…

题目----力扣--移除链表元素

题目 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入&…

1-2 ARM单片机GPIO

def:通用输入输出口 GPIO输出模式原理讲解 1:推挽输出 2:复用推挽输出 电流最大是20mA,对于单片机来说总体的输出是由范围的 开漏/复用开漏输出 外部接上拉电阻的开漏输出 线与的概念 注: 与的概念:全1为1&…

动态内存开辟(下)

前言 动态内存开辟以及柔性数组的介绍 一、 几个经典的笔试题 1. 题目一 void Getmemory(char*p) {p (char*)malloc(100); } int main() {char* str NULL;Getmemory(str);strcpy(str, "hello world");printf(str);return 0; } 这段代码我们可以发现两个很明显…

2-5 任务:打印九九表

本次实战的目标是通过编写程序实现打印九九乘法表、字符矩形、字符平行四边形和字符菱形等图形,以及解决百钱买百鸡问题和输出素数等实际问题。在实战过程中,我们将学习并掌握以下知识点。 双重循环的使用:通过双重循环实现九九乘法表的打印&…

视频素材库在哪里找免费手机版?8个可以用手机浏览的素材网

在视觉内容占据主导地位的今天,合适的视频素材可以大大提升项目的吸引力和效果。以下列出的视频素材网站为广告制作者、社交媒体策略师及电影制作人提供了从传统到现代风格的各种视频素材选择,满足不同的创作需求。 1. 蛙学府(中国&#xff…

大模型系列之解读MoE

Mixtral 8x7B 的推出, 使我们开始更多地关注 基于MoE 的大模型架构, 那么,什么是MoE呢? 1. MoE溯源 MoE的概念起源于 1991 年的论文 Adaptive Mixture of Local Experts(https://www.cs.toronto.edu/~hinton/absps/jjn…

艺术的新领域——探索元宇宙艺术展带来的沉浸式艺术体验

在数字化的浪潮中,元宇宙艺术展成为了一种全新的展览形式,它通过虚拟现实、3D建模技术和互动平台,将传统艺术与现代科技巧妙结合,提供了一种前所未有的艺术欣赏方式。此类展览不仅展示了艺术作品的新颖呈现,还为参观者…

京东生产环境十万并发秒杀系统三高架构

文章目录 三高——高并发、高可用、高可扩展用数据库乐观锁解决超卖阿里巴巴:为了提升数据库性能,对数据库的源码级别做了改造——在DB内部实现内存队列,一次性接收很多的请求,一次性更新。京东:redis,mq&a…

【C++ 关键字】const 关键字详解

文章目录 1. const 概念2.常量指针 和 指针常量 的区别2.1 常量指针(底层 const)2.2 指针常量 (顶层 const) 3.const 关键字的作用4.const 和 define 的区别5.const 总结 1. const 概念 const 是一个关键字,被修饰的值不能改变,是…