docker image设置jdk版本_Dockerfile安装jdk1.8 、部署java项目

本文介绍了如何通过Dockerfile设置基础镜像为CentOS 7,安装JDK 1.8,并创建环境变量。然后,展示了如何将Java应用程序的jar包复制到镜像中,并通过ENTRYPOINT指令启动应用。最后,通过docker build创建镜像,并运行容器进行部署。
摘要由CSDN通过智能技术生成

基础指令

FROM

基于哪个镜像

MAINTAINER

用来写备注信息,例如作者、日期等。

COPY

复制文件进入镜像(只能用相对路径,不能用绝对路径)

ADD

复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)

WORKDIR

指定工作目录,假如路径不存在会创建路径

ENV

设置环境变量

EXPOSE

暴露容器端口到宿主机

RUN

在构建镜像的时候执行一条命令,作用于镜像层面

shell命令格式:RUN yum install -y net-tools

exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]

ENTRYPOINT

在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条

CMD

在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条

容器启动后执行默认的命令或者参数,允许被修改

安装jdk

同级目录下创建一个Dockerfile,必须叫这个名字

[root@localhost file]# ll

total 181296

-rw-r--r--. 1 root root 0 Oct 31 10:34 Dockerfile

-rw-r--r--. 1 root root 185646832 Mar 28 2019 jdk-8u181-linux-x64.tar.gz

编写Dockerfile

[root@localhost file]# vim Dockerfile

[root@localhost file]# cat Dockerfile

# 基于cntos7,如果没有这个镜像那么它会下载这个镜像。

FROM centos:7

# 创建者(这个可以不写)

MAINTAINER 吴磊

# 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录

WORKDIR /usr

# 执行命令(这里创建了一个目录)

RUN mkdir /usr/local/java

# 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压

ADD jdk-8u181-linux-x64.tar.gz /usr/local/java

# 重命名(不知道文件名可以现在宿主机解压后看一下)

RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk

# 设置环境变量

ENV JAVA_HOME /usr/local/java/jdk

ENV JRE_HOME ${JAVA_HOME}/jre

ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib

ENV PATH ${JAVA_HOME}/bin:$PATH

执行dockerfile文件,创建的镜像名为jdk1.8,最后面的点表示当前目录(即dockerfile所在目录)

[root@localhost file]# docker build -t='jdk1.8' .

Sending build context to Docker daemon 201.8MB

Step 1/10 : FROM centos:7

---> 67fa590cfc1c

Step 2/10 : MAINTAINER 吴磊

---> Running in 82b0855b713c

Removing intermediate container 82b0855b713c

---> 6ba6c5306ef5

Step 3/10 : WORKDIR /usr

---> Running in 53f979aa515b

Removing intermediate container 53f979aa515b

---> 623ec9ba1c71

Step 4/10 : RUN mkdir /usr/local/java

---> Running in f074844393c7

Removing intermediate container f074844393c7

---> 05a226b05d2f

Step 5/10 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/java

---> 99a917b34d5c

Step 6/10 : RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk

---> Running in ccdf92640d65

Removing intermediate container ccdf92640d65

---> 93d145bf041d

Step 7/10 : ENV JAVA_HOME /usr/local/java/jdk

---> Running in bcded531db5a

Removing intermediate container bcded531db5a

---> 715630eea4d3

Step 8/10 : ENV JRE_HOME ${JAVA_HOME}/jre

---> Running in c9aa4b7df0db

Removing intermediate container c9aa4b7df0db

---> 97050481ab7a

Step 9/10 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib

---> Running in 0123f3ea1213

Removing intermediate container 0123f3ea1213

---> 8304bed832f1

Step 10/10 : ENV PATH ${JAVA_HOME}/bin:$PATH

---> Running in 66e39b8befef

Removing intermediate container 66e39b8befef

---> 437729c49ac1

Successfully built 437729c49ac1

Successfully tagged jdk1.8:latest

查看所有的镜像,此时就多了一个jdk1.8

[root@localhost file]# docker images

REPOSITORY TAG I MAGE ID CREATED SIZE

jdk1.8 latest 437729c49ac1 14 seconds ago 584MB

centos 7 67fa590cfc1c 2 months ago 202MB

制作容器并进到容器里面(能看到java版本号就没问题了)

[root@localhost file]# docker run -it --name=jdk8 jdk1.8:latest /bin/bash

[root@98c7b9225445 usr]# java -version

java version "1.8.0_181"

Java(TM) SE Runtime Environment (build 1.8.0_181-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

[root@98c7b9225445 usr]#

部署jar包

[root@localhost demo]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

jdk1.8 latest 437729c49ac1 3 days ago 584MB

centos 7 67fa590cfc1c 2 months ago 202MB

[root@localhost demo]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

jar包同级目录创建Dockerfile

[root@localhost demo]# ll

total 15772

-rw-r--r--. 1 root root 16145495 Oct 31 22:03 app.jar

-rw-r--r--. 1 root root 301 Nov 4 02:03 Dockerfile

[root@localhost demo]# cat Dockerfile

# 基于jdk镜像

FROM jdk1.8:latest

# 创建一个目录

RUN mkdir /demo

# 将jar包copy到指定目录

ADD app.jar /demo/app.jar

# 启动命令

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"]创建镜像,指定名称demo版本号为1.0.0

[root@localhost demo]# docker build -t='demo:1.0.0' .

Sending build context to Docker daemon 16.15MB

Step 1/4 : FROM jdk1.8:latest

---> 437729c49ac1

Step 2/4 : RUN mkdir /demo

---> Running in 0f115368bbc0

Removing intermediate container 0f115368bbc0

---> 50a35fe9a726

Step 3/4 : ADD app.jar /demo/app.jar

---> e240bfc406de

Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"]

---> Running in 746468a020dc

Removing intermediate container 746468a020dc

---> 3c66e4400e03

Successfully built 3c66e4400e03

Successfully tagged demo:1.0.0

容器创建成功

[root@localhost demo]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

demo 1.0.0 3c66e4400e03 6 seconds ago 600MB

jdk1.8 latest 437729c49ac1 3 days ago 584MB

centos 7 67fa590cfc1c 2 months ago 202MB

启动容器,映射到宿主机的9999端口

[root@localhost demo]# docker run -di --name=demo1 -p 9999:8080 demo:1.0.0

64584a03cd6f06b7750d4d30993186d7a8ed0c3212eccb0fa1573b9bedf935e7

[root@localhost demo]#

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值