使用Dockerfile安装精简版的jdk镜像

Docker安装的JDK镜像通常较大,有必要安装精简版。博客介绍了构建精简版JDK镜像的步骤,包括下载JRE、解压、删除无用文件、重新打包、新建Dockerfile文件、构建镜像以及查看镜像等。

步骤

docker安装jdk镜像往往很大,基本都是600多兆,因此,有必要去除多余的部分安装精简版的jdk

下载jre

官网下载jre就可以,没必要下载jdk。
链接: https://pan.baidu.com/s/1OxQpjvww5LxKTlz9RPn9sQ 提取码: 3pzp 复制这段内容后打开百度网盘手机App,操作更方便哦

解压jre

## cd 到压缩包位置
## 执行解压
tar -zxvf jre-8u271-linux-x64.tar.gz

删除无用文件

# cd jre1.8.0_271/
# rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html
# rm -rf   lib/plugin.jar \
           lib/ext/jfxrt.jar \
           bin/javaws \
           lib/javaws.jar \
           lib/desktop \
           plugin \
           lib/deploy* \
           lib/*javafx* \
           lib/*jfx* \
           lib/amd64/libdecora_sse.so \
           lib/amd64/libprism_*.so \
           lib/amd64/libfxplugins.so \
           lib/amd64/libglass.so \
           lib/amd64/libgstreamer-lite.so \
           lib/amd64/libjavafx*.so \
           lib/amd64/libjfx*.so

重新打包去除无用文件后的文件夹

##jre1.8.tar.gz自己命名,jre1.8.0_271是去除无用文件之后的文件夹
tar -zcvf jre8.tar.gz jre1.8.0_271

新建Dockerfile文件,和tar.gz同目录

#基础镜像
FROM centos:8
#作者
MAINTAINER hcb
ADD jre8.tar.gz /usr/java/jdk/
#指定容器内时间
ENV TZ=Asia/Shanghai
#环境设置
ENV JAVA_HOME /usr/java/jdk/jre1.8.0_271
ENV PATH ${PATH}:${JAVA_HOME}/bin

构建docker镜像

docker build -t jdk:8-slim .

查看镜像

docker images 
<think>首先,用户的问题是:“我想查找使用Dockerfile制作JDK17镜像的方法 请问使用Dockerfile制作JDK17镜像的方法”。我需要根据提供的引用内容来回答。 回顾引用内容: - 引用[1]: 描述了Dockerfile的基本结构和用途,提到了制作jdk镜像。 - 引用[2]: 给出了制作jdk11镜像的具体Dockerfile示例。 - 引用[3]: 直接提供了制作jdk17镜像Dockerfile内容。 - 引用[4]: 讨论了制作jdk1.8镜像,并列出了一些Dockerfile命令。 用户明确要求制作JDK17镜像,所以我应该重点参考引用[3],因为它直接提到了jdk17。 关键点从引用[3]: - `FROM centos:7`:使用CentOS 7作为基础镜像。 - `MAINTAINER emon`:维护者信息。 - `WORKDIR /usr/local/java`:设置工作目录。 - `ADD jdk17.tar.gz /usr/local/java/`:添加JDK 17的tar.gz文件并解压。 - 环境变量配置: - `ENV JAVA_HOME=/usr/local/java/jdk-17.0.6` - `ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar` - `ENV PATH=$PATH:$JAVA_HOME/bin` 用户的需求是查找方法,所以我需要提供一个清晰的步骤指南,基于这些引用。同时,确保我的回答符合系统级指令:使用中文、正确LaTeX格式、结构清晰、生成相关问题。 结构我的回答: 1. **引言**:简要介绍使用Dockerfile制作JDK17镜像的方法。 2. **步骤指南**:列出详细步骤,包括如何编写Dockerfile文件。 3. **Dockerfile示例**:提供完整的Dockerfile内容,基于引用[3]。 4. **构建镜像命令**:解释如何构建镜像。 5. **验证镜像**:可选地,提到如何检查镜像是否成功。 6. **生成相关问题**:添加相关问题部分。 确保LaTeX格式: - 行内数学表达式用$...$,但这里可能没有数学内容。 - 独立公式用$$...$$,但可能不需要。 - 代码块使用代码格式化。 参考引用: - 在回答中,自然地添加引用标识,例如[^1]、[^2]等。 从引用: - 引用[3]直接相关:[^3] - 其他引用可能作为背景:[^1]、[^2]、[^4] 现在,构建回答: 1. **回答主体**: - 解释Dockerfile的作用。 - 提供制作JDK17镜像的具体步骤。 - 给出Dockerfile示例。 Dockerfile示例从引用[3]: ``` FROM centos:7 MAINTAINER emon WORKDIR /usr/local/java ADD jdk17.tar.gz /usr/local/java/ ENV JAVA_HOME=/usr/local/java/jdk-17.0.6 ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar ENV PATH=$PATH:$JAVA_HOME/bin ``` 构建命令:`docker build -t jdk-17-image .` 2. **引用标识**: - 在相关部分末尾添加,例如在提到基础结构时加[^1],在具体步骤时加[^2]或[^3]。 3. **相关问题**: - 基于主题生成3-5个相关问题。 - 例如:如何优化Dockerfile?如何构建其他版本的JDK镜像?等。 最终回答大纲: - 开头:简要解释。 - 步骤: a. 准备JDK17压缩包。 b. 创建Dockerfile文件。 c. 编写Dockerfile内容。 d. 构建镜像。 e. 验证镜像。 - 代码块展示Dockerfile。 - 相关问题部分。 </think>基于提供的引用内容,我将详细介绍使用Dockerfile制作JDK 17镜像的方法。以下是分步骤指南,确保过程清晰可操作。制作JDK镜像的核心是编写一个Dockerfile文件,定义镜像构建规则,然后使用Docker命令构建镜像。 ### 制作JDK 17镜像的步骤 1. **准备JDK 17压缩包** 从Oracle官网下载JDK 17的Linux版本压缩包(如`jdk-17.0.x_linux-x64_bin.tar.gz`),并将其放置在本地目录(例如`/docker-jdk17`)。确保文件名称与Dockerfile中的引用一致[^3]。 2. **创建Dockerfile文件** 在JDK压缩包所在目录中,创建一个名为`Dockerfile`的文本文件(无扩展名)。使用文本编辑器(如vi)编写内容。 3. **编写Dockerfile内容** 以下是制作JDK 17镜像的标准Dockerfile示例,基于CentOS 7基础镜像(引用自[^3],并优化语法): ```dockerfile # 指定基础镜像使用CentOS 7) FROM centos:7 # 维护者信息(可自定义) MAINTAINER your_name # 设置工作目录 WORKDIR /usr/local/java # 添加并解压JDK 17压缩包(ADD命令自动解压) ADD jdk-17.0.x_linux-x64_bin.tar.gz /usr/local/java/ # 配置环境变量 ENV JAVA_HOME=/usr/local/java/jdk-17.0.x ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar ENV PATH=$PATH:$JAVA_HOME/bin ``` **关键解释**: - `FROM centos:7`: 使用CentOS 7作为基础镜像,提供Linux环境支持[^3]。 - `ADD`: 复制并自动解压JDK压缩包;确保文件名(如`jdk-17.0.x_linux-x64_bin.tar.gz`)与实际下载文件匹配[^2][^3]。 - `ENV`: 设置Java环境变量,其中`JAVA_HOME`路径需匹配解压后的JDK文件夹名称(如`jdk-17.0.x`)[^3]。 - **注意**:如果JDK版本不同,修改文件名和路径即可。如JDK 17.0.6,则路径设为`/usr/local/java/jdk-17.0.6`。 4. **构建Docker镜像** 在Dockerfile所在目录运行以下命令,构建镜像: ```bash docker build -t jdk-17-image:latest . ``` - `-t jdk-17-image:latest`: 指定镜像名称和标签。 - ` .`: 表示使用当前目录中的Dockerfile和上下文文件(即JDK压缩包)[^3][^4]。 5. **验证镜像** 构建完成后,运行容器测试JDK是否安装成功: ```bash docker run -it jdk-17-image:latest /bin/bash java -version # 应输出JDK 17版本信息 ``` ### 注意事项 - **基础镜像选择**:推荐使用`centos:7`以确保兼容性,但也可替换为其他Linux发行版(如`ubuntu:20.04`),需调整包管理命令[^2][^4]。 - **优化建议**:精简镜像大小,可在Dockerfile中添加清理命令,例如在解压后删除压缩包: ```dockerfile RUN tar -zxvf jdk-17.0.x_linux-x64_bin.tar.gz && rm -f jdk-17.0.x_linux-x64_bin.tar.gz ``` - **错误处理**:若构建失败,检查Dockerfile语法(避免多余空格)和文件路径是否正确[^1][^4]。 通过以上步骤,您可以高效创建自定义JDK 17镜像,适用于Java应用容器化部署。 --- ### 相关问题 1. 如何优化Dockerfile以减少JDK镜像的大小? 2. 使用Dockerfile制作其他JDK版本(如JDK 11JDK 21)的方法有什么不同? 3. Dockerfile中的`COPY`和`ADD`命令有什么区别? 4. 如何在Docker镜像中配置时区(如Asia/Shanghai)? 5. 验证JDK镜像是否成功的常用命令有哪些? [^1]: Dockerfile基本结构和命令概述。 [^2]: JDK镜像构建示例(JDK 11)。 [^3]: JDK 17镜像Dockerfile具体实现。 [^4]: Dockerfile命令详解和优化参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值