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

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,有一点实在搞不懂,就是它的tag,也就是镜像的版本要怎么选?它的命名规则也太乱了,而且非常的不规律,实在看不懂啊。就比如我想安装Java8最新版,应该用哪个tag? 补充:Java8最新版是8u421,但是好像搜不到?那应该怎么办? https://hub.docker.com/_/openjdk

  • 如下图,第一个有具体的版本号,第二个只有代号,那第二个到底是什么版本呢?我不明白。

  • 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