当前位置: 首页 > 知识库问答 >
问题:

docker - Java8最新版是8u421,但是Docker的image里没有这个版本,应该怎么办?

白智
2024-09-29

Java8最新的版本是8u421,但是hub.docker.com里没有这个版本,最新的只有8u342版本,那应该怎么办?手动进入Docker里升级版本吗?

共有2个答案

单于翰飞
2024-09-29

因为这个docker hub里面的的openjdk镜像已经不维护了。

可以考虑换成其他的发行版,比如aws的amazoncorretto

长孙星汉
2024-09-29

如果你需要特定版本的Java 8(比如8u421),但Docker Hub上可用的官方镜像只提供了更新的版本(如8u342),你有几个选项来处理这个问题:

1. 使用旧版本的Docker镜像

如果8u421或你需要的旧版本在某个时间点已经被构建为Docker镜像并上传到了Docker Hub或其他Docker仓库,你可以尝试搜索并拉取那个特定的镜像。不过,这通常不是推荐的做法,因为旧版本的软件可能包含未修复的安全漏洞。

2. 手动构建Docker镜像

你可以从Java的官方安装包或源码手动构建你自己的Docker镜像。这通常涉及到以下几个步骤:

  • 下载Java 8u421的安装包(JDK或JRE)。
  • 创建一个Dockerfile,使用基础镜像(如Ubuntu、CentOS等),并在其中安装Java 8u421。
  • 使用docker build命令构建你的Docker镜像。

Dockerfile的示例可能如下:

# 使用官方Ubuntu基础镜像
FROM ubuntu:latest

# 更新apt包列表并安装wget和unzip(如果Java包是zip格式)
RUN apt-get update && apt-get install -y wget unzip

# 下载Java JDK 8u421
RUN wget -qO - https://your-download-url/jdk-8u421-linux-x64.tar.gz | tar -xzf - -C /opt

# 设置环境变量
ENV JAVA_HOME /opt/jdk1.8.0_421
ENV PATH $JAVA_HOME/bin:$PATH

# 验证Java安装
RUN java -version

# 设置工作目录(可选)
WORKDIR /app

请替换https://your-download-url/jdk-8u421-linux-x64.tar.gz为你实际下载的JDK链接。

3. 考虑升级至更新的Java版本

虽然你可能需要特定版本的Java 8,但通常来说,升级到更新的Java版本(如Java 11或更高)是更好的选择,因为新版本会包含性能改进和安全修复。如果可能的话,评估你的应用程序与较新Java版本的兼容性。

结论

根据你的具体需求(如必须使用Java 8u421),你可能需要选择上述方法中的一个。如果安全和维护不是主要考虑因素,使用旧版本的Docker镜像可能是最快的解决方案。然而,在大多数情况下,手动构建你的Docker镜像或升级到更新的Java版本是更可取的做法。

 类似资料:
  • docker pull 这个命令 我当时想的是拉取最新版本的镜像 结果发现tag是latest 但是版本不是最新的 dockerhub库中有最新的 这是不是说明我的docker拉取的仓库不对啊 怎么修改 或配置 我配置了阿里加速 下面是配置的阿里的

  • 我的应用程序需要确定设备是否具有谷歌提供的最新操作系统软件。 例如,目前,我需要能够确定设备是否正在运行Marshmallow,而不管手机可能永远无法安装Marshmallow的事实。 这是否需要硬编码到应用程序中? 谢啦

  • 根据反馈更新 对于等于或高于17.03的Docker版本,如何查看图像的图层?虽然我为早期的Docker系统找到了大量的解决方案(见这个问题),但现在还能这样做吗? 我特别感兴趣的是能够一次删除一层。我记得很久以前读过这篇文章(在Docker时代,大约12-18个月!)然而,我丢失了那个参考资料,在网上的任何地方都找不到。我从下面的第一个答案中了解到,中间层不再下载并报告丢失,但如果我下载了整个图

  • 问题内容: Windows Server 2016 似乎内置了 Windows 上的Docker?并支持在Docker容器中运行Windows并将Windows用作Docker容器主机。这是否支持Linux?我不这么认为,我认为它仅支持运行Windows Docker容器。这似乎也由Microsoft维护。 用于Windows的Docker似乎是由Docker团队创建的单独安装,用于将Linux

  • 选项不执行任何操作。 下面是我的文件: 它有正确的版本,但我得到 我使用的是Mac OS 10.15.5和Android Studio 4.0.1。

  • 问题内容: 我首先得到了我的nginx码头工人形象: 然后我开始了: 然后我停止了它: 然后我尝试重新启动它: 好吧,这是一个错误。但实际上,现在容器列表中没有任何内容: 为什么重启nginx镜像失败?如何解决? 问题答案: 这是因为 您已使用开关。 容器已停止且未移除 你发现它停止了 您可以使用以下命令简单地启动它: 编辑:替代方法 如果您想每次使用以下命令启动容器, 然后使用以下之一: 方法1

  • 几年前我安装了Java版本10.0.2,但为了特定的目的需要将其更新到11.0.2(不是最新的版本13.0.2,我需要它是11.0.2)。 下载JDK-11.0.2之后,我打开了环境变量窗口,并进行了如下更改。 添加新路径

  • 我几天前听说了Docker的事,想过去看看。 但事实上,我不知道这个“容器”的用途是什么? 什么是容器? 它能取代一个专门用于开发的虚拟机吗? 简单地说,在公司中使用Docker的目的是什么?主要的优势?