docker制作高版本jdk17镜像踩坑

Ρause 2024-06-21 09:37:04 阅读 83

1、创建目录并下载jdk上传到服务器中

从jdk官网下载jdk17镜像,提示:下载到本地用xftp上传到服务器(速度会快点)

jdk官网:https://www.oracle.com/java/technologies/downloads/#graalvmjava21

创建目录,将下载好的jdk17塞进去

mkdir -p /usr/local/dockerjdk17_ypcd /usr/local/dockerjdk17_yp

 编写dockerfile

FROM centos:7MAINTAINER emonWORKDIR /usr/local/javaADD jdk17.tar.gz /usr/local/java/ENV JAVA_HOME=/usr/local/java/jdk-17.0.10ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jarENV PATH=$PATH:$JAVA_HOME/bin

资料中注意:ENV JAVA_HOME=/usr/local/java/jdk-17.0.10 中的jdk-17.0.10不要替换成jdk-17_linux-x64_bin.tar.gz ,因为ADD jdk17.tar.gz命令中ADD自带解压缩的功能,而jdk-17_linux-x64_bin.tar.gz 解压缩后并不是直接去掉压缩后缀,所以最好先解压一遍看下解压之后的文件夹名是什么,再替换文件目录

解读:需要将JAVA_HOME=中=后面的路径写为解压完jdk后的文件路径,如图

点完1以后就会出现2,需要将2的文件名称写入到dockerfile中,也就是这一行

ENV JAVA_HOME=/usr/local/java/jdk-17.0.10

2的地方是jdk-17.0.10,就是替换为jdk-17.0.10就可以了

接下来就可以正常构建镜像了

3、构建镜像(注意后面有点,表示当前目录)

docker build -t='java17_yp' .

这里的java17_yp就是镜像的名字

4、启动镜像

docker run -di --name java17_yp -d java17_yp解释:这个 docker run 命令用于在Docker中启动一个新的容器实例。让我们分解一下各个部分:docker run: 这是Docker命令行工具的子命令,用于启动一个新的容器实例。-d: 这个标志表示在后台运行容器(detach mode),也就是说,容器会立即返回控制台,而不是阻塞在容器的输出上。--name centos7-java17: 这个选项用于指定新创建的容器的名称为 centos7-java17,方便后续管理和引用。-i: 这个标志开启交互模式,即使在后台运行,也保持容器的标准输入打开,允许后续的交互(例如通过docker attach连接)。-d centos7-java17: 这里看起来是一个错误,因为通常 -d 后面应该跟的是容器镜像的名称或ID,但在这里,-d 和 --name 选项的顺序颠倒了。如果-d后面紧跟着的是镜像名称,那应该是正确的,但在这种情况下,它看起来像是重复了-d标志。正确的用法应该是只保留一个 -d。centos7-java17: 这应该是指定的Docker镜像名称,假设你有一个预先构建好的镜像,名为 centos7-java17,该镜像基于CentOS 7并预装了Java 17。综上所述,这个命令的意图是启动一个基于 centos7-java17 镜像的新容器,并将其命名为 centos7-java17,同时在后台运行(-d)并保持交互性(-i)。由于 -d 和 --name 选项的位置不正确,命令可能无法按预期工作。正确的命令应该是:

看完就可以停止容器了,为了保存内存

5、进入容器

docker exec -it 容器ID /bin/bash

6、查看版本

java -version



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。