Docker 基于Centos:7构建JDK基础镜像

 1、下载

我们通过使用JRE来构建基础镜像,已达到最小化JDK基础镜像的目的,首先需要下载JRE(如果下载较慢可以选择下载本文附件中的JRE),传送门如下:

官方jre下载地址:https://www.java.com/en/download/manual.jsp

2、安装

然后解压JRE包,删除根目录下文本文件,然后删除其他不必要文件,命令如下:

#解压
tar -zxvf jre-8u271-linux-x64.tar.gz
#进入目录
cd jre1.8.0_271/
#删除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.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

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

$ tar -zcvf jre1.8.0_271.gz jre1.8.0_271/

创建Dockerfile(ps:Dockerfile文件要和jre1.8.0_271.gz在一个路径下,如果不一样,下面的ADD里面的路径要相应变化)

FROM centos:7
MAINTAINER hao 
ADD jre1.8.0_271.gz /usr/java/
ENV JAVA_HOME /usr/java/jre1.8.0_271
ENV PATH ${PATH}:${JAVA_HOME}/bin
WORKDIR /data/

执行构建命令,这里注意仓库地址和标签换成自己的,命令如下:

$ docker build -t  harbor.sportxxxutikb.com/library/java8:1.0 .

这是要打包成的镜像地址 harbor.sportxxxutikb.com/library/java8:1.0   java8:1.0镜像名称

3、验证

测试运行,命令如下:

$ docker run -it harbor.sportxxxutikb.com/library/java8:1.0 bash
# java version "1.8.0_271"
 Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
 Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)

到这,基础镜像打包完成。

4.把应用程序打包到基础镜像并发布

创建一个Dockerfile文件(ps:Dockerfile文件要和rocketmq-console-ng-1.0.0.jar在一个路径下,或者绝对路径

FROM harbor.sportxxxutikb.com/library/java8:1.0
MAINTAINER hao 
ADD rocketmq-console-ng-1.0.0.jar /data
EXPOSE 8080
ENTRYPOINT ["java","-jar","rocketmq-console-ng-1.0.0.jar"]

#docker要暴露的端口8080

EXPOSE 8080  

#启动镜像自动运行程序的命令

ENTRYPOINT ["java","-jar","rocketmq-console-ng-1.0.0.jar"]

执行构建命令,这里注意仓库地址和标签换成自己的,命令如下:

docker build -t  test/java8:1.0 .

执行docker images,就能看到刚刚打包的镜像

docker run -d --name rocketmq  -p 88:8080 test/java8:1.0

然后就可以通过ip+端口 查看程序是否起来 192.168.136.129:88

docker run -itd --name rocketmq  -p 88:8080 test/java8:1.0 /bin/bash

交互式进入容器,输入ps -ef 就能看到执行的程序

[root@d7f8b01619cc data]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0 10 07:38 pts/0    00:00:12 java -jar rocketmq-console-ng-1.0.0.jar
root         81      0  0 07:40 pts/1    00:00:00 bash
root         96     81  0 07:40 pts/1    00:00:00 ps -ef

spacer.gif

这样一个镜像就打包完成了


猜你喜欢

转载自blog.51cto.com/14543334/2546494
今日推荐