問題
用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