一、说明
1、使用的是Oracle的JRE不是openjdk。
2、因为java依赖glibc,所以基础镜像使用的是alpine-glibc而非alpine,alpine-glibc大概是11.1M。
二、制作
1、首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M。
2、解压jre包,删除根目录下文本文件,然后删除其他不必要文件。
1#解压 2tar xvcf jre-8u161-linux-x64.tar.gz 3#进入目录 4cd jre1.8.0_161/ 5#删除文本文件 6rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html 7#删除其他无用文件 8rm -rf lib/plugin.jar \ 9 lib/ext/jfxrt.jar \ 10 bin/javaws \ 11 lib/javaws.jar \ 12 lib/desktop \ 13 plugin \ 14 lib/deploy* \ 15 lib/*javafx* \ 16 lib/*jfx* \ 17 lib/amd64/libdecora_sse.so \ 18 lib/amd64/libprism_*.so \ 19 lib/amd64/libfxplugins.so \ 20 lib/amd64/libglass.so \ 21 lib/amd64/libgstreamer-lite.so \ 22 lib/amd64/libjavafx*.so \ 23 lib/amd64/libjfx*.so
3、重新打包所有文件(不打包也可以,在Dockerfile里ADD这个目录即可,当前精简完jre目录大小是107M,压缩后是41M)
tar zcvf jre8.tar.gz *
4、创建Dockerfile
1# using alpine-glibc instead of alpine is mainly because JDK relies on glibc 2FROM docker.io/jeanblanchard/alpine-glibc 3# author 4MAINTAINER scc <shangchengcai@voole.com> 5# A streamlined jre 6ADD jre8.tar.gz /usr/java/jdk/ 7# set env 8ENV JAVA_HOME /usr/java/jdk 9ENV PATH ${PATH}:${JAVA_HOME}/bin 10# run container with base path:/opt 11WORKDIR /opt
5、构建(整体大小是122M)
docker build -t voole/java8:1.0 .
6、测试运行
1# docker run -it voole/java8:1.0 2/opt # java -version 3java version "1.8.0_161" 4Java(TM) SE Runtime Environment (build 1.8.0_161-b12) 5Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)