1 基础知识
本章节需要你先掌握Linux系统的JDK部署,如你尚未具备此知识,请按如下方法熟悉“jdk-8u65-linux-x64.tar.gz”版本的JDK部署,
2 最佳实践
2.1 部署前的准备
2.1.1 部署Docker环境
本章使用如下Docker环境部署,参阅本章建议你先搭建以下Docker集群环境并熟悉,
2.1.2 准备系统镜像
In docker01
cd /data/docker/images/
docker load -i centos_centos7.3.1611.tar
docker tag centos:centos7.3.1611 docker01.cmdschool.org:5000/centos:centos7.3.1611
docker push docker01.cmdschool.org:5000/centos:centos7.3.1611
docker image rm centos:centos7.3.1611
另外,安装包的离线下载请在能上网的docker环境的机器上使用如下命令,
docker pull centos:centos7.3.1611
docker save centos:centos7.3.1611 -o centos_centos7.3.1611.tar
2.1.3 下载JDK二进制安装包
cd ~
wget http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u65-linux-x64.tar.gz?AuthParam=1479977626_06aed8a715c8fbbc10f72c89ee38910b -O jdk-8u65-linux-x64.tar.gz
2.2 创建新镜像
2.2.1 创建镜像项目文件夹
mkdir ~/imageProject-jdk1.8.0_65
2.2.2 创建Dockerfile
vim ~/imageProject-jdk1.8.0_65/Dockerfile
加入如下配置,
FROM docker01.cmdschool.org:5000/centos:centos7.3.1611
MAINTAINER will@cmdschool.org
# Deploy Java jdk
COPY jdk1.8.0_65 /usr/java/jdk1.8.0_65
ENV JAVA_HOME=/usr/java/jdk1.8.0_65
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH
注:
“FROM”指令声明基于“centos7.3.1611”镜像打包
“COPY”指令声明复制当前目录的具体文件到打包的镜像
“ENV”指令声明Java JDK运行所需的环境变量
所以我们需要根据定义的文件准备需要复制的文件,
cd ~
tar -xf jdk-8u65-linux-x64.tar.gz -C ~/imageProject-jdk1.8.0_65/
确认所需的文件存在,
ls ~/imageProject-jdk1.8.0_65/
可见如下显示,
Dockerfile jdk1.8.0_65
2.2.3 执行打包操作
cd ~/imageProject-jdk1.8.0_65/
docker build -t jdk:8u65-linux-x64 .
以上“.”指当前目录为编译目录,编译程序会自动加载“Dockerfile”文件定义,可见如下显示,
Sending build context to Docker daemon 366.2MB
Step 1/7 : FROM docker01.cmdschool.org:5000/centos:centos7.3.1611
---> c5d48e81b986
[...]
Successfully built 1bf01e245901
Successfully tagged jdk:8u65-linux-x64
如果镜像集群公用,还需要执行以下命令,
docker tag jdk:8u65-linux-x64 docker01.cmdschool.org:5000/jdk:8u65-linux-x64
docker push docker01.cmdschool.org:5000/jdk:8u65-linux-x64
docker image rm jdk:8u65-linux-x64
完成后,可使用如下命令查看镜像,
docker images
可见如下显示,
REPOSITORY TAG IMAGE ID CREATED SIZE
docker01.cmdschool.org:5000/jdk 8u65-linux-x64 da584614c4ba 33 seconds ago 557MB
[...]
2.2.4 测试软件运行
docker run -d --name jdk docker01.cmdschool.org:5000/jdk:8u65-linux-x64 /usr/sbin/init
以上运行容器环境后,我们使用以下命令登录容器虚拟机,
docker exec -it `docker container ls | grep 'jdk' | cut -d" " -f1 ` /bin/bash
测试Java运行
java -version
可见如下显示,
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
测试完成后可使用如下命令退出容器虚拟机,
exit
另外,你可以使用如下命令查询当前运行的container,
docker ps -a
可见如下显示,
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
020bf23ea36b docker01.cmdschool.org:5000/jdk:8u65-linux-x64 "/usr/sbin/init" About a minute ago Up About a minute jdk
[...]
然后可以使用如下命令停止并删除,
docker container stop 020bf23ea36b
docker container rm 020bf23ea36b
参阅文档
====================