1、创建目录并下载jdk上传到服务器中
从jdk官网下载jdk17镜像,提示:下载到本地用xftp上传到服务器(速度会快点)
jdk官网:https://www.oracle.com/java/technologies/downloads/#graalvmjava21
创建目录,将下载好的jdk17塞进去
mkdir -p /usr/local/dockerjdk17_yp
cd /usr/local/dockerjdk17_yp
编写dockerfile
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.10
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
ENV 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