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

相关文章

更改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

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo