一晃公众号都几年没更新文章了 ̄□ ̄||
最近使用docker容器部署发现生成镜像有600多M,原来是jdk镜像就有500多M,一想时间久了不都要1个G了,正常windows下的jdk也没那么大,所以简直不能忍,要精简jdk镜像,那么见证奇迹的时刻到了。
结合网上资料看下alpine是个啥?
alpine Linux简介
1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。
2.Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu是apt-get),我们可以通过https://pkgs.alpinelinux.org/packages 查询包信息
3.Alpine Docker镜像继承了Alpine Linux发行版的这些优势,相比于其他Linux Docker镜像,它的体积非常小 对比常用的、没有压缩过的基础镜像(查看当前的:latest标签):
Alpine - 4.8MB
centos - 124.8 MB
Debian - 125.1MB
Centos - 196MB
制作镜像
1、首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是77M。
2、解压jre包,删除根目录下文本文件,然后删除其他不必要文件。
解压
tar -xf jre1.8.0_271.tar.gz
进入目录
cd jre1.8.0_271
删除无用文件
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 -cf jre1.8.0_271.tar.gz jre1.8.0_271
创建Dockerfile
#1.指定基础镜像,并且必须是第一条指令
FROM docker.io/jeanblanchard/alpine-glibc
#2.指明该镜像的作者和其电子邮件
MAINTAINER mary "mary@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /data/opt/jdk
#ADD和copy的区别:ADD复制并解压,copy只是复制
ADD jre1.8.0_271.tar.gz /data/opt/jdk
#4.运行指定的命令,设置东8时区
RUN apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& rm -rf /var/cache/apk/*
#5.配置环境变量
ENV JAVA_HOME /data/opt/jdk/jre1.8.0_271
ENV PATH ${PATH}:${JAVA_HOME}/bin
构建docker镜像
docker build -t jre1.8:v1.0 .
看看最终效果
测试
docker run -it --name jre8 b563da133cae
这样最终镜像大小才100多M左右。