不知道大家平时在打java项目镜像的时候用的基础镜像是啥,反正这么多年我遇到的java项目基础镜像基本都是基于jdk的,因为业务开发很少会注意镜像大小以及镜像优化这一点,导致一个镜像好几百兆大小,但是我们运行Java项目其实只需要运行时环境就可以了,其他的好多软件根本没啥用,它唯一的作用就是拖慢你的部署速度。那么我们以java 8,和java17为例,一步步来进行镜像的优化。
为什么选择java8和java17:
因为这两个版本是比较典型的长期支持版本,java8可以说是最牛钉子户,没有之一(不多说,懂的都懂),在这个节点上,如果java8的开发者要升级,第一选择就是java17, 性能强悍免费又稳定,官方力推。
我们在打镜像之前得先简单了解一下JDK,JRE的区别,那么我们从如下几个内容出发。
- 了解一下JDK、JRE的简单区别。
- Java8 版本Dockerfile的镜像优化
- 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基础镜像的打包流程
- 下载Java版本
我们先到Oracle的官网(