docker制作高版本jdk17镜像踩坑

2024-05-30 21:36

本文主要是介绍docker制作高版本jdk17镜像踩坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于docker制作高版本jdk17镜像踩坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1016917

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke