打包docker jdk最小镜像步骤(考虑到小体积,使用jre包,但需要带jps功能)
1、到官网找jre对应的下载地址
注意官网找的url中otn需要加-pub wget --no-cookies --no-check-certificate --header "cookie:oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jre-8u311-linux-x64.tar.gz 因为需要jps功能因此下载对应的jdk包 wget --no-cookies --no-check-certificate --header "cookie:oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.tar.gz2、解压jre-8u311-linux-x64.tar.gz,删除一些无用文件
#解压 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*.so3、解压jdk-8u311-linux-x64.tar.gz将jps(/bin)和tools.jar(/lib)文件拷贝到对应目录
#解压 tar -zxvf jdk-8u311-linux-x64.tar.gz #进入目录 cd jdk1.8.0_311/ #拷贝jps文件 cp bin/jps ../jre1.8.0_311/bin/ #拷贝tools.jar文件 cp lib/tools.jar ../jre1.8.0_311/lib/4、重新打tar.gz包
cd jre1.8.0_311/ tar zcvf jre8.tar.gz *5、创建Dockerfile(记得安装glib三个依赖包,否则会有问题)
# using alpine-glibc instead of alpine is mainly because JDK relies on glibc
FROM alpine:3.8
LABEL maintainer="modaozushiyo"
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime &&
echo ${TZ} > /etc/timezone
#******************更换Alpine源为mirrors.ustc.edu.cn******************
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories &&
echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
RUN apk update && apk upgrade
# Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
# 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
# wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh: wget: not found”,网上例子少安装wget
# ca-certificates证书服务,是安装glibc前置依赖
RUN apk --no-cache add libstdc++ ca-certificates bash wget
&& wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
&& wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk
&& wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-bin-2.30-r0.apk
&& wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-i18n-2.30-r0.apk
&& apk add glibc-2.30-r0.apk && apk add glibc-bin-2.30-r0.apk && apk add glibc-i18n-2.30-r0.apk
&& rm -rf /var/cache/apk/* glibc-2.30-r0.apk glibc-bin-2.30-r0.apk glibc-i18n-2.30-r0.apk
RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig
# A streamlined jre
ADD jre8.tar.gz /usr/java/jdk/
# set env
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
6、构建镜像
docker build -t docker-registry:5000/jdk:8-jre-modaozushiyo .7、测试镜像的java环境及jps是否可用
docker run -it docker-registry:5000/jdk:8-jre-modaozushiyo java -version docker run -it docker-registry:5000/jdk:8-jre-modaozushiyo jps8、下载镜像,大小约212M
docker save -o docker-registry-5000-jdk-8-jre-modaozushiyo.tar docker-registry:5000/jdk:8-jre-modaozushiyo
以上为教程可手动学习,如果有哪些小伙伴不想动手只需要镜像,请到以下地址下载镜像
百度网盘 请输入提取码 :gu9a



