专栏首页杂烩Docker容器之最小JDK基础镜像 原

Docker容器之最小JDK基础镜像 原

一、说明    

    1、使用的是Oracle的JRE不是openjdk。

    2、因为java依赖glibc,所以基础镜像使用的是alpine-glibc而非alpine,alpine-glibc大概是11.1M。

二、制作

    1、首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M。

    2、解压jre包,删除根目录下文本文件,然后删除其他不必要文件。

#解压
tar xvcf jre-8u161-linux-x64.tar.gz
#进入目录
cd jre1.8.0_161/
#删除文本文件
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目录大小是107M,压缩后是41M)

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 scc <shangchengcai@voole.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、构建(整体大小是122M)

docker build -t voole/java8:1.0 .

    6、测试运行

# docker run -it voole/java8:1.0
/opt # java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Arthasa应用 原

    Arthasa是个好东西,用熟了确实一大助力,本文主要描述如何用Arthasa解决问题(官网https://alibaba.github.io/arthas)。

    尚浩宇
  • ganglia安装报错解决 原

    1、There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: ...

    尚浩宇
  • kafka连接异常 原

    尚浩宇
  • sigar进行JAVA后台系统资源监控错误:java.lang.UnsatisfiedLinkError

    Windows系统下载这三个文件:sigar-amd64-winnt.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib。放...

    浩Coding
  • /sbin/ldconfig.real: /usr/local/lib/libcudnn.so.7 不是符号链接

    (adsbygoogle = window.adsbygoogle || []).push({});

    Pulsar-V
  • Android开发:Kotlin下配置DataBinding

    近日,随着Google召开了Google I/O 2017,Kotlin大火一把。因为Google宣布Kotlin为First-class开发语言作 为一名Ko...

    JarvanMo
  • APK加固之类抽取分析与修复

    隐藏dex文件:通过对目标DEX文件进行整体加密或压缩方式把整个dex转换为另外一个文件存放在assets文件夹中或者其它地方,然后利用类加载器技术进行内存解密...

    我是小三
  • MySQL从删库到跑路_高级(二)——自定义函数

    自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件: A、参数 B...

    良月柒
  • kotlin, 一种新的android平台一级开发语言

    今天看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连...

    用户1608022
  • Go gRPC Hello World

    开始 gRPC 了,这篇文章学习使用 gRPC,输出一个 Hello World。

    新亮

扫码关注云+社区

领取腾讯云代金券