首页 > 其他分享 >docker最小化jdk基础镜像

docker最小化jdk基础镜像

时间:2023-10-12 10:00:39浏览次数:31  
标签:opt lib tar glibc amd64 jdk 最小化 docker alpine

一、说明

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

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

二、制作

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

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

#解压
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*.so、

 

3、重新打包所有文件(不打包也可以,在 Dockerfile 里 ADD 这个目录即可,当前精简完 jre 目录大小是107 M,压缩后是41 M)

 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 aluopy <[email protected]>
# 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、构建(整体大小是122 M)

docker build -t aluopy/java8:1.0 .

6、测试运行

$ docker run -it aluopy/java8:1.0
/opt # java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)

 

 

再进一步制作 时间同步 中文支持等

FROM docker.io/jeanblanchard/alpine-glibc
WORKDIR /home/jack/

#最下面有网盘  有这两包, 一个中文  一个上面做好的jre包
#jre8.tar.gz   language.tar.gz ADD *.tar.gz  /opt/
ENV JAVA_HOME /opt/java ENV PATH $PATH:$JAVA_HOME/bin ENV LANG zh_CN.UTF-8 ENV TZ Asia/Shanghai

RUN cd /opt/language/ && cp sgerrand.rsa.pub /etc/apk/keys/  \     && apk add glibc-2.34-r0.apk  glibc-bin-2.34-r0.apk  glibc-i18n-2.34-r0.apk  \     && /usr/glibc-compat/bin/localedef -i zh_CN -f UTF-8 zh_CN.UTF-8  \     && rm -rf /opt/language/*.apk

 

链接: https://pan.baidu.com/s/12SvS4DkVJG3y6DghEoGxMw?pwd=w5r7 提取码: w5r7 

 

标签:opt,lib,tar,glibc,amd64,jdk,最小化,docker,alpine
From: https://www.cnblogs.com/namedgx/p/17758825.html

相关文章

  • Docker内时区查询和修改方法
    利用【dockerexec-it容器ID/bin/bash】命令进入Docker容器内,执行【date】命令查看Docker容器的时间发现与宿主机有误差时,修改时间和时区。方法一:在【宿主机】中执行命令,【dockercp/etc/localtime容器ID:/etc/localtime】,重启Docker容器。方法二:在【宿主机】中执行命......
  • Docker 安装mysql8.0
    环境CentOS7、MySQL8、SQLyog12需求在Docker中部署MySQL8步骤1、从docker仓库中拉去mysql8.0dockerpullmysql:8.0如果使用dockerpullmysql默认拉取的是最新版本的mysql上面我拉去的是8.0的版本,最后拉取过来的是8.0.27如果有想要指定的版本,可以直接写指定版本,......
  • Docker 基础02
    七、Docker数据持久化7.1将本地目录映射到容器mkdir-p/datadockerrun-itd-v/data/:/data--name=test01centosbash#-v指定挂载目录,:前面的/data/为宿主机本地目录,:后面的/data/为容器的目录。 在/data/目录创建一个文件echo'hellok8s'>/data/hello.txt......
  • 修改docker默认存储路径方法总结
    默认情况下,docker镜像的默认存储路径是/var/lib/docker或其他根目录,有的服务器本身硬盘容量不足需要挂载到数据盘中,所以总结一下修改docker的默认路径,方法如下:先创建新的docker目录mkdir/home/docker以挂载home目录为例,此处也可另外挂载一块磁盘,把新的docker目录建在新磁盘上......
  • JDK8之后新增的时间-Instant
     ......
  • JDK8之后新增的时间-LocalDate、LocalTime、LocalDateTime、ZoneId、ZoneDateTime
    LocalDate:代表本地日期(年、月、日、星期)LocalTime:代表本地时间(时、分、秒、纳秒)LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)(其三者都可以调用now()方法,且其对象内容不一样)LocalDate:  (获取的本地对象是一个不可变对象) (注意:修改之后是创建了......
  • 软件测试|docker搭建Jenkins+Python+allure自动化测试环境
    简介本文将详细介绍如何使用Docker搭建一个完整的自动化测试环境,其中包括Jenkins作为持续集成和持续交付工具,Python作为测试脚本编写语言,以及Allure作为测试报告生成工具。通过使用Docker容器,您可以轻松地设置和管理这些工具,提高测试效率和质量。安装docker安装docker的步骤,可......
  • docker和主机之间文件传输
    docker和主机之间文件传输1、从docker内部向主机传输文件语法:dockercp[OPTIONS]CONTAINER:SRC_PATHDEST_PATH|- 示例:将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中dockercp96f7f14e99ab:/www/tmp/ 2、从主机向docker内部传输文件语法:dockercp[......
  • OpenJDK17-JVM源码阅读-ZGC-并发标记
    1、ZGC简介1.1介绍ZGC是一款低延迟的垃圾回收器,是Java垃圾收集技术的最前沿,理解了ZGC,那么便可以说理解了java最前沿的垃圾收集技术。从JDK11中作为试验特性推出以来,ZGC一直在不停地发展中。从JDK14开始,ZGC开始支持Windows。在JDK15中,ZGC不再是实验功能,可以......
  • 一键切换jdk
    一键切换jdk原理为脚本修改环境变量jdk8.cmd@echooff::获取管理员权限%1mshtavbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c%~s0::","","runas",1)(window.close)&&exitcd/d"%~dp0"......