一、GitHub上的java镜像(推荐使用)
地址:https://hub.docker.com/r/frolvlad/alpine-java/
这个镜像是基于Linux镜像,包含Java运行时(JRE)和Java开发工具包(JDK),打包成单独DOCKER标签。JDK包中包含了很多Docker镜像不需要的东西,所以它被清理了。有3个标记:-full(仅删除SRC tarballs)、-cleaned(桌面部件已清理)、*-slim(除编译器和JVM之外的所有内容都已删除)。master引用jdk8 slim标签,latest的标签指向jdk8 cleaned。
最共分两类:
JDK:
frolvlad/alpine-java:jdk8-slim
frolvlad/alpine-java:jdk8-cleaned
frolvlad/alpine-java:jdk8-full
JRE:
frolvlad/alpine-java:jre8-slim
frolvlad/alpine-java:jre8-cleaned
frolvlad/alpine-java:jre8-full
1、外网环境下直接拉取自己需要的镜像
eg1:拉取最小JDK Docker镜像
docker pull frolvlad/alpine-java:jdk8-slim
eg2:拉取最小JRE Docker镜像:
docker pull frolvlad/alpine-java:jre8-slim
2、公司内网需要将外网的镜像存储为*.tar包搬到内网来
然后将*.tar文件上传到虚拟机,载入镜像:
docker load <【文件名】
docker load <jre1.8.0.tar
查看镜像:
docker images
进入容器:
docket run -it 【imageID】
测试运行:
#docker run -it 【imageID】
/ # java -version
二、自己制作的最小jre镜像(126M)
1、说明:
使用的是Oracle的JRE不是openjdk。因为java依赖glibc,所以基础镜像使用的是alpine-glibc而非alpine,alpine-glibc大概是11.1M。
2、制作:
2.1 首先下载jre,下载地址是https://www.java.com/en/download/manual.jsp,大概是80M。
2.2 本地解压上传到虚拟机,进入/jre1.8.0_201目录,删除多余文件:
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html
rm -rf lib/plugin.jar
rm -rf lib/ext/jfxrt.jar
rm -rf bin/javaws
rm -rf lib/javaws.jar
rm -rf lib/desktop
rm -rf plugin
rm -rf lib/deploy*
rm -rf lib/*javafx*
rm -rf lib/*jfx*
rm -rf lib/amd64/libdecora_sse.so
rm -rf lib/amd64/libprism_*.so
rm -rf lib/amd64/libfxplugins.so
rm -rf lib/amd64/libglass.so
rm -rf lib/amd64/libgstreamer-lite.so
rm -rf lib/amd64/libjavafx*.so
rm -rf lib/amd64/libjfx*.so
在/jre1.8.0_201相同目录下创建Dockerfile文件,下载基础镜像和配置java运行环境。文件中填写:
# using apline-glibc instead of apline is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# add jre
ADD jre1.8.0_201.tar.gz /usr/local/docker/java/jdk/
# env
ENV JAVA_HOME=/usr/local/docker/java/jdk/jre1.8.0_201
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
# workdir
WORKDIR /opt
构建镜像(整体大小为126M):
docker build -t java/jre1.8.0:rtc .
2.5 测试运行:
#docker run -it 【imageID】
/opt # java -version
将*.tar包搬到内网保存
然后将.tar文件上传到虚拟机,载入镜像:
docker load <【文件名】
docker load <jre1.8.0.tar
三、docker命令
1、删除镜像需要需要先删除容器
查看容器
docker ps -a
删除容器
docker rm 【容器ID】
删除镜像:
docker rmi 【镜像ID】
2、直接进入运行中的容器(不需重复创建容器的方式进入容器)
启动已经终止的容器
docker start 【容器ID】
进入运行的容器
docker exec -it 【容器ID】 /bin/sh