docker构建体积较小的jdk镜像
原创 2021-03-01 14:28 阅读(1734)次
前言
我们一般在docker中运行java项目都会选择体积较小的jdk镜像,比如alpine-java构建的jdk镜像,但alpine安装软件并不方便,并且有些软件在alpine中并不好装。
例如我们java项目中使用tesseract来做图片文字识别,它在centos中很容易安装,在alpine环境中,怎么都没法安装成功,于是我们就需要构建一个有centos环境的jdk镜像
构建有centos环境的jdk镜像
1.下载jre
下载地址:
https://www.java.com/en/download/manual.jsp
下载jre8.tar.gz,并不是下载jdk,这样打出的镜像文件就会相对小一点。
2.上传jre到有docker环境的机器上,解压:
tar -zxvf re8.tar.gz
删除jre8.tar.gz,否则这个文件也会打进去,
创建Dockerfile,最后文件如下:
drwxrwsrwx 2 root root 208 Feb 22 08:48 bin
-rwxrwxrwx 1 root root 358 Feb 22 11:12 Dockerfile
drwxrwsrwx 4 root root 31 Feb 22 08:46 legal
drwxrwsrwx 13 root root 4096 Feb 22 08:48 lib
drwxrwsrwx 4 root root 47 Feb 22 08:46 man
-rwxrwxrwx 1 root root 190 Dec 9 18:15 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rwxrwxrwx 1 root root 190 Dec 9 20:47 THIRDPARTYLICENSEREADME.txt
然后设置权限
chmod 777 * -R
3.Dockerfile文件写入如下内容:
FROM centos:centos8
MAINTAINER user "user@qq.com"
ADD . /usr/java/jdk/
ENV JAVA_HOME /usr/java/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin
WORKDIR /opt
ENTRYPOINT java -version
网上也有人使用ADD jre8.tar.gz /usr/java/jdk/这样让docker自己解压的方式构建镜像,但是这样需要运行权限命令:
RUN /bin/sh -c ‘chmod 777 /usr/java/jdk -R’
否则会报权限不足的问题。
但这样打出来的包会更大一点,有400多MB。因为多构建了一层。
4.执行build
docker build -t jdk-centos:1.8.281 .
查看镜像
[root@localhost df-jdk]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk-centos 1.8.281 878bcb563f8c 6 minutes ago 329MB
镜像大小只有329MB
运行容器成功:
[root@localhost df-jdk]# docker run --name myjava jdk-centos:1.8.281
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)