代码改变世界

Docker容器之最小JDK基础镜像 【转、改】

2023-02-02 11:26  方斌  阅读(650)  评论(0编辑  收藏  举报

使用压缩包

# using alpine-glibc instead of alpine  is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# author
MAINTAINER fb 
# A streamlined jre
ADD jre8.tar.gz /usr/java/jdk/
# set env
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
# run container with base path:/opt
WORKDIR opt

使用文件夹

# using alpine-glibc instead of alpine  is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# author
MAINTAINER fb 
# A streamlined jre
ADD jre1.8.0_361/ /usr/java/jdk/
# set env
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
# run container with base path:/opt
WORKDIR opt

删除无用文件后,使用文件夹和压缩文件,大小无变化

[root@localhost docker-images]# docker images
REPOSITORY                   TAG                IMAGE ID       CREATED          SIZE
ff/jre8                      8.0.361.3          8f945fcc7504   27 minutes ago   134MB
ff/jre8                      8.0.361.2          811aa77a30b6   31 minutes ago   134MB
ff/jre8                      8.0.361            e1ac1aba4552   35 minutes ago   281MB

一、说明

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包,删除根目录下文本文件,然后删除其他不必要文件。

解压

tar xvcf jre-8u161-linux-x64.tar.gz

进入目录

cd jre1.8.0_161/

删除文本文件

rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html

删除其他无用文件

rm -rf     lib/plugin.jar \
           lib/ext/jfxrt.jar \
           bin/javaws \
           lib/javaws.jar \
           lib/desktop \
           plugin \
           lib/deploy* \
           lib/*javafx* \
           lib/*jfx* \
           lib/amd64/libdecora_sse.so \
           lib/amd64/libprism_*.so \
           lib/amd64/libfxplugins.so \
           lib/amd64/libglass.so \
           lib/amd64/libgstreamer-lite.so \
           lib/amd64/libjavafx*.so \
           lib/amd64/libjfx*.so
3、重新打包所有文件(不打包也可以,在Dockerfile里ADD这个目录即可,当前精简完jre目录大小是107M,压缩后是41M)
tar zcvf jre8.tar.gz *
4、创建Dockerfile
# using alpine-glibc instead of alpine  is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# author
MAINTAINER scc <shangchengcai@voole.com>
# A streamlined jre
ADD jre8.tar.gz usr/java/jdk/
# set env
ENV JAVA_HOME usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
# run container with base path:/opt
WORKDIR opt
5、构建(整体大小是122M)
docker build -t voole/java8:1.0 .
6、测试运行
# docker run -it voole/java8:1.0
/opt # java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)