问题
用centos作为基础镜像和150多M的jdk压缩来创建一个jdk镜像,发现都要500多m,这个确实有点大了。
所以下面就是如何构建最小的jdk镜像。
使用docker images 命令的时候可以看到我们的jdk真的很大
使用Oracle的JRE不是openjdk,并构建成Docker镜像。具体步骤如下
一:首先官网下载jre
大约80多M,下载结束之后上传到centos上的 /usr/local/dockerimage/smalljava8 (自定义一个目录)
二:解压jar包,并且删除不必要的文件
tar -zxvf jre-8u231-linux-x64.tar.gz
进入目录
cd jre1.8.0_231
删除文本文件
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
三:重新打包所有文件
tar zcvf jre8.tar.gz *
打包之后把压缩包拷贝到 jre8 目录下,见下图
二:解压jar包,并且删除不必要的文件
四:创建Dockerfile
现在的目录结构如下:
进入jre8目录下,创建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/local/dockerimage/smalljava8/jre8/
# set env
ENV JAVA_HOME /usr/local/dockerimage/smalljava8/jre8
ENV PATH ${PATH}:${JAVA_HOME}/bin
# run container with base path:/opt
WORKDIR /opt
五:构建镜像
docker build -t fds/java8:1.0 .
六:测试运行
docker run -it fds/java8:1.0
验证是否运行成功
docker ps