1.宿主机上,创建dockerfile文件
# CentOS with JDK 8
# centos作为基础镜像
FROM centos
# 维护者
MAINTAINER zsw
# 创建目录
RUN mkdir /usr/local/java
# 宿主机上的jdk 压缩包路径 自动解压至容器内的指定安装位置
#例如你想解压至 /usr/local/java/
# ADD jdk-8u171-linux-x64.tar.gz /usr/local/java8/ 实际解压至/usr/local/java/jdk1.8.0_171
# jdk-8u171-linux-x64.tar.gz 对应的解压目录文件夹是jdk1.8.0_171
ADD /xxx/xxx/jdk-8u171-linux-x64.tar.gz /usr/local/java/
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
2.构建镜像
2.1 执行命令
# 参数 -f /xxx/.../dockerfile 指定dockerfile文件的位置
# 参数 -t centos-jdk8 定义一个镜像名称
# 不要忘记最后面的点 .
docker build -f /xxx/.../dockerfile -t centos-jdk8 .
# 如果执行命令 在dockerfile文件统计目录下,可不用指定dokerfile指定位置
docker build -t centos-jdk8 .
2.2 执行过程
[root@localhost mydocker]# docker build -t centos-java8 .
Sending build context to Docker daemon 190.9MB
Step 1/9 : FROM centos
---> 0f3e07c0138f
Step 2/9 : MAINTAINER zsw
---> Running in b00ec8a87148
Removing intermediate container b00ec8a87148
---> 3439a1639c25
Step 3/9 : RUN mkdir /usr/local/java
---> Running in eb63a19f93c6
Removing intermediate container eb63a19f93c6
---> 52b1463a6a25
Step 4/9 : ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
---> eeda7b44dcb3
Step 5/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
---> Running in eb54fbd91445
Removing intermediate container eb54fbd91445
---> a0feb140a671
Step 6/9 : ENV JRE_HOME ${JAVA_HOME}/jre
---> Running in 25f717738527
Removing intermediate container 25f717738527
---> d9d409bb28e0
Step 7/9 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
---> Running in c6c9db791fca
Removing intermediate container c6c9db791fca
---> 139d8a76aca7
Step 8/9 : ENV PATH ${JAVA_HOME}/bin:$PATH
---> Running in f97dab631e5f
Removing intermediate container f97dab631e5f
---> 5723b43356c8
Step 9/9 : CMD /bin/bash -c 'java -version'
---> Running in d77b947a1bb2
Removing intermediate container d77b947a1bb2
---> 098ccd8b0f7d
Successfully built 098ccd8b0f7d
Successfully tagged centos-java8:latest
2.3 查看镜像
[root@localhost mydocker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos-java8 latest 098ccd8b0f7d 11 seconds ago 607MB
3 运行容器
# 参数 -d 后台启动
# 后缀 /bin/sh 开启一个进程,保持容器的运行,否则容器运行一下就停止了
#创建并进入
docker run -it --name="zsw-tester" centos-java8 /bin/sh
#查看java 版本 是否安装成功
[root@67f129665b01 /]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
# 查看环境变量
[root@67f129665b01 /]# env
LANG=en_US.UTF-8
HOSTNAME=67f129665b01
JAVA_HOME=/usr/local/java/jdk1.8.0_171
CLASSPATH=.:/usr/local/java/jdk1.8.0_171/lib:/usr/local/java/jdk1.8.0_171/jre/lib
PWD=/
HOME=/root
TERM=xterm
SHLVL=1
JRE_HOME=/usr/local/java/jdk1.8.0_171/jre
PATH=/usr/local/java/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/usr/bin/env