docker最小化jdk基础镜像
一、说明
1、使用的是 Oracle 的 JRE 不是 openjdk
2、因为 java 依赖 glibc,所以基础镜像使用的是 alpine-glibc 而非 alpine,alpine-glibc 大概是11.1 M
二、制作
1、首先下载 jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M。
2、解压 jre 包,删除根目录下文本文件,然后删除其他不必要文件。
#解压 tar zxvf jre-8u311-linux-x64.tar.gz #进入目录 cd jre1.8.0_311/ #删除文本文件 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 目录大小是107 M,压缩后是41 M)
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 aluopy <aluopy@qq.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、构建(整体大小是122 M)
docker build -t aluopy/java8:1.0 .
6、测试运行
$ docker run -it aluopy/java8:1.0
/opt # java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
再进一步制作 时间同步 中文支持等
FROM docker.io/jeanblanchard/alpine-glibc
WORKDIR /home/jack/
ADD jre8.tar.gz /opt/
ADD language.tar.gz /opt/
#COPY 123.jar /home/jack/
ENV JAVA_HOME /opt/java
ENV PATH $PATH:$JAVA_HOME/bin
ENV LANG zh_CN.UTF-8
ENV TZ Asia/Shanghai
RUN rm -rf /etc/apk/repositories \
&& echo "https://mirrors.aliyun.com/alpine/v3.15/main" >> /etc/apk/repositories \
&& echo "https://mirrors.aliyun.com/alpine/v3.15/community" >> /etc/apk/repositories \
&& apk --no-cache add ca-certificates tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& cd /opt/language/ && cp sgerrand.rsa.pub /etc/apk/keys/ \
&& apk update && apk upgrade && apk add --no-cache bash \
&& apk add glibc-2.34-r0.apk glibc-bin-2.34-r0.apk glibc-i18n-2.34-r0.apk \
&& /usr/glibc-compat/bin/localedef -i zh_CN -f UTF-8 zh_CN.UTF-8 \
&& apk del tzdata && apk del glibc-i18n \
&& rm -rf /opt/language/*.apk \
&& rm -rf /var/cache/apk/*
链接: https://pan.baidu.com/s/12SvS4DkVJG3y6DghEoGxMw?pwd=w5r7 提取码: w5r7