因为 Java是基于GUN Standard C library(glibc) 而 Alpine是基于MUSL libc(mini libc),所以,选择基础镜像 alp,需要 安装glibc的库,如下是我的dockerfile:
FROM alpine:3
MAINTAINER "manluqiusuo<lansekaola@163.com>"
LABEL version="1.0"
LABEL description="This is a jdk8 base image"
#设置国内软件仓库镜像
RUN sed -i 's!http://dl-cdn.alpinelinux.org/!https://mirrors.ustc.edu.cn/!g' /etc/apk/repositories
#更换Alpine源为mirrors.ustc.edu.cn
#RUN echo http://mirrors.ustc.edu.cn/alpine/v3.13/main > /etc/apk/repositories \
# && echo http://mirrors.ustc.edu.cn/alpine/v3.13/community >> /etc/apk/repositories
WORKDIR /glibc
COPY ./glibc/ /glibc/
WORKDIR /java
ADD ./jdk-8u281-linux-aarch64.tar.gz /java/
#安装时区设置 复制本地时区信息到镜像中 安装 Glibc 注意清理cache
RUN apk --no-cache add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk add --allow-untrusted /glibc/*.apk \
&& rm -rf /glibc \
&& rm -rf /var/lib/apt/lists/*
#配置时区
ENV TZ Asia/Shanghai
# 输出,和当前时间对比 删除其他时区配置,节省空间
RUN date -R && apk del tzdata
#配置JDK环境变量
ENV JAVA_HOME /java/jdk1.8.0_281
ENV PATH $JAVA_HOME/bin:$PATH
不通的jdk版本,自己更换jdk安装包,我这里使用的jdk1.8,也切换过jdk15,都可以,glibc我使用过几个版本,只有这个版本,没问题,有需要的可以下载:
https://download.csdn.net/download/lansekaola/16176326
没有下载积分,只是为了方便大家,不用再去找了!
这个镜像构建完毕后,有几点不足,希望大神帮忙给解答一下:
1.都说依据alpine做基础镜像后,构建的镜像非常小,可是,我这个构建出来的,却不是特别小,希望大神们给看看,我的dockerfile那里写的不足
2.我用centos:7做基础镜像,比这个还简单,不用安装glibc等,但是,镜像更大.有没有什么改进centos:7打的镜像包
说白了,就是如何能做的体积更小,望大神给帮忙看看