一、准备
- 基础镜像使用的是alpine-glibc,因为java依赖glibc
- 下载jre,下载地址是https://www.java.com/en/download/manual.jsp,
- 上传jre-8u231-linux-x64.tar.gz至服务器
二、制作jre
1、解压jre
tar -zxvf jre-8u231-linux-x64.tar.gz
2、进入目录
cd jre1.8.0_231
3、删除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html
4、删除其他无用文件
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
5、重新打包所有文件
tar zcvf ../jre8.tar.gz *
三、创建镜像
1、创建Dockerfile文件
FROM jeanblanchard/alpine-glibc:latest
ADD jre8.tar.gz /usr/local/jdk/
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV JAVA_HOME /usr/local/jdk
#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
2、构建镜像
docker build -t jre/java8:1.2 .
3、运行
root@hhit-Virtual-Machine:/home/docker_jre1# docker run -it jre/java8:1.2
/ # java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
四、乱码问题
上面创建的镜像是有问题的,在运用到java项目运行时,日志等中文会乱码的,所以我想把法解决一下。
下载locale-archive文件,下载地址:http://download.csdn.net/download/zhuchuanwan/11970328
将locale-archive放在和Dockerfile同一个目录下
修改Dockerfile文件,加入locale-archive,如下:
FROM jeanblanchard/alpine-glibc:latest
ADD locale-archive /usr/glibc-compat/lib/locale/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
ADD jre8.tar.gz /usr/local/jdk/
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV JAVA_HOME /usr/local/jdk
#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
五、时区问题
在Dockerfile文件中加入
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
最终Dockerfile文件如下:
FROM jeanblanchard/alpine-glibc:latest
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
ADD jre8.tar.gz /usr/local/jdk/
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV JAVA_HOME /usr/local/jdk
#ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
这是我构建的java8镜像,可以直接拿来用
registry.cn-hangzhou.aliyuncs.com/hhit/java8:min