docker容器自定义jdk镜像
前言
有官方的jdk镜像,为什么还要自定义jdk镜像?
当我们在官方镜像中找不到我们所需要的版本时,就可以单独下载指定版本的安装包,然后根据安装包自定义jdk镜像。
本文以jdk1.8.0_181为例,详细讲述自定义jdk镜像的步骤。
docker和docker-compose版本说明:
C:\Users\whwtr>docker -v
Docker version 20.10.17, build 100c701
C:\Users\whwtr>docker-compose -v
docker-compose version 1.29.2, build 5becea4c
C:\Users\whwtr>
说明:如果是Windows或macOS系统直接安装docker-desktop即可。
详细步骤
第一步:下载jdk-8u181版本安装包:jdk-8u181-linux-x64.tar.gz
下载地址:
https://www.oracle.com/java/technologies/downloads/archive/
根据版本号,下载对应的安装包。
将下载的安装包放入新建的jdk目录。
第二步:编辑dockerfile文件
dockerfile文件内容如下:
# 基础镜像
FROM centos:7
# author
MAINTAINER smaple
# 切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
# 将jdk添加至容器中
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java/
# 配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_181
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
同样,将dockerfile文件放在jdk目录下。
第三步:docker build构建镜像
构建镜像命令(注意:最后.表示当前目录):
docker build -t 镜像名称:标签 .
构建镜像:
docker build -t jdk:1.8.0_181 .
构建镜像(不使用缓存机制):
docker build --no-cache=true -t jdk:1.8.0_181 .
如下图示:
查看镜像列表,如下图示:
第四步:运行jdk镜像
jdk镜像生成后,我们可以根据镜像创建并启动容器,进入容器确认jdk是否是我们指定的版本。
创建并启动容器命令:
docker run -di --name=jdk_1.8.0_181 jdk:1.8.0_181
以命令行登录容器命令:
docker exec -it jdk_1.8.0_181 /bin/sh
登录容器后,我们可以输入java -version确认jdk版本,如下图示:
至此,jdk自定义镜像就创建完成,之后我们可以将此镜像作为基础镜像,来构建上层应用的镜像,从而达到以指定jdk来运行我们的应用的目标。
相关命令说明:
1、创建并启动容器命令:
docker run -di --name=容器名称 镜像名称:标签
参数说明:
-i 运行容器
-d 后台运行
--name 为创建的容器命名
2、登录守护式容器:
docker exec -it 容器名称|容器ID /bin/bash
3、退出当前容器:
exit
(完)