按这个方法打java17的镜像,直接减少70%

不知道大家平时在打java项目镜像的时候用的基础镜像是啥,反正这么多年我遇到的java项目基础镜像基本都是基于jdk的,因为业务开发很少会注意镜像大小以及镜像优化这一点,导致一个镜像好几百兆大小,但是我们运行Java项目其实只需要运行时环境就可以了,其他的好多软件根本没啥用,它唯一的作用就是拖慢你的部署速度。那么我们以java 8,和java17为例,一步步来进行镜像的优化。

为什么选择java8和java17:

因为这两个版本是比较典型的长期支持版本,java8可以说是最牛钉子户,没有之一(不多说,懂的都懂),在这个节点上,如果java8的开发者要升级,第一选择就是java17, 性能强悍免费又稳定,官方力推。

我们在打镜像之前得先简单了解一下JDK,JRE的区别,那么我们从如下几个内容出发。

  1. 了解一下JDK、JRE的简单区别。
  2. Java8 版本Dockerfile的镜像优化
  3. Java17 JRE版本Dockerfile的编写。

了解一下JDK、JRE的简单区别

JDK: Java Development Kit,是Java的标准开发工具包(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。

JRE: Java Runtime Environment,是java运行时的环境,包含了java虚拟机,java基础类库,是使用java语言编写的程序运行所需要的软件环境。

简单来讲JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。而JDK不仅仅提供了运行环境,还提供了Java的全套开发工具(如编译器和调试器等)。

Java8 版本Dockerfile的镜像优化

想要打包Java8版本的基础镜像,那么首先就需要下载对应系统的java版本,然后编写Dockerfile, 最后打包镜像测试。我们按流程来看一下,由于我们是在LInux版本上用的,所以需要选Linux版本的。

Java8基础镜像的打包流程

  1. 下载Java版本

我们先到Oracle的官网(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDK是一个开发环境,用于构建应用程序,applet程序,和使用Java编程语言的组成部分。 Java Development Kit(JDK)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 定于2月19日发布的Java SE原来的重要补丁更新 - 2013年2月,但甲骨文决定加快释放该重要补丁更新,因为积极开发“野生”的Java漏洞影响在桌面浏览器,运行时环境(JRE)与该重要补丁更新解决。 更新日志:JDK 7u17 发布,该版本修复了浏览器插件的严重的安全漏洞:CVE-2013-1493,Oracle 强烈建议使用 Java 浏览器插件用户升级。 重要补丁更新是针对多个安全漏洞的补丁集合。为Java SE重要补丁更新还包括非安全修复程序。重要补丁更新是累积性的,每个公告只描述自上一个重要补丁更新和安全警报添加的安全修复。因此,以前的重要补丁更新和安全警报建议应检讨有关以前累积的安全修复程序。 请参考: 重要补丁更新和安全警报的信息,有关Oracle安全性公告。 由于一个成功的攻击所带来的威胁,Oracle强烈建议用户尽快应用CPU修复程序。该重要补丁更新包含50个新安全修复程序的Java SE的产品。 支持受影响的产品 该重要补丁更新解决的安全漏洞影响以下按类别列出的产品。请点击可用补丁列或可用补丁表中的链接来访问这些补丁的文档。
Docker镜像是一个按照固定规则得到的压缩包,它包含了运行Java程序所需的环境和依赖。在部署Java应用到Docker环境时,我们可以选择定制一个Java运行环境镜像,以满足特定需求。由于Oracle授权问题,Docker Hub上一般只有基于OpenJDK的镜像可用。然而,OpenJDK镜像不支持字体管理,这可能导致在使用一些验证码功能时出现错误。此外,OpenJDK镜像的大小较大,例如openjdk:17-slim镜像大小为407M。因此,定制一个Java运行环境镜像可以解决这些问题。\[1\] 需要注意的是,Docker不是镜像,而是一个用来操作镜像的软件。Docker提供了管理镜像和容器的功能,可以解决不同软件依赖冲突的问题。学习Docker可以掌握制作镜像、管理镜像、管理容器、管理数据卷、操作远程和私有仓库等内容。制作镜像可以使用Dockerfile文件来构建,而Docker管理镜像和容器的命令可以帮助我们进行相关操作。\[2\]\[3\] 总结起来,你可以通过定制一个Java运行环境镜像来满足特定需求。Docker提供了丰富的功能来管理镜像和容器,帮助解决软件依赖冲突的问题。你可以使用Dockerfile文件来构建镜像,并使用Docker命令来管理镜像和容器。参考文献中提供了一些学习Docker的资源,可以帮助你更深入地了解和使用Docker。 #### 引用[.reference_title] - *1* [jdk17运行环境docker镜像制作](https://blog.csdn.net/gfdgdshhg/article/details/126371867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [java学习第18步——Docker镜像](https://blog.csdn.net/xiaotiig/article/details/127124457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值