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 .

如下图示:

docker-build-jdk.pngdocker-build-jdk.png

查看镜像列表,如下图示:

docker-images.pngdocker-images.png

第四步:运行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版本,如下图示:

docker-run-jdk.pngdocker-run-jdk.png

至此,jdk自定义镜像就创建完成,之后我们可以将此镜像作为基础镜像,来构建上层应用的镜像,从而达到以指定jdk来运行我们的应用的目标。

相关命令说明:
1、创建并启动容器命令:

docker run -di --name=容器名称 镜像名称:标签
参数说明:
-i    运行容器
-d    后台运行
--name    为创建的容器命名

2、登录守护式容器:

docker exec -it 容器名称|容器ID /bin/bash

3、退出当前容器:

exit

(完)

最后修改于:2023年10月31日 21:29

添加新评论