【发布时间】:2019-08-21 14:21:03
【问题描述】:
我正在尝试安装 openjdk-8-jre vie DockerFile,因为我为我的作曲家构建了 docker 映像。但我遇到了这个错误信息。
错误信息:
Package openjdk-8-jre-headless is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'openjdk-8-jre-headless' has no installation candidate
这是来自 Dockerfile 的部分:
# Install openjdk and java cacerts
RUN apt-get update && apt-get install -y openjdk-8-jre-headless ca-certificates-java
如果我直接从控制台安装 java,在没有 RUN 的情况下使用完全相同的命令,包没有问题。但是当我尝试从 Dockerfile 安装它时,我遇到了错误。我知道 Docker 使用与运行 docker 的机器相同的存储库? Ubuntu 是 16.04 版。
或者我如何检查 Dockerfile 上的可用安装包? java -v 报错..
【问题讨论】:
-
“工作正常”在完全相同的机器上?请注意,如果这是一个 Docker 实例,它运行的发行版与您的外部主机不同(这就是重点!),所以包名称 &c。可以不同。我们会知道您成功测试的是哪个特定版本的 Ubuntu,以及失败的是哪个特定版本的 Ubuntu,以便能够得出结论。
-
(我强烈怀疑您正在运行 Docker 的部分原因是命令打印错误——为了得到您的错误,该命令需要真正以
/bin/sh -c 'apt-get update && apt-get install -y openjdk-8-jre-headless ca-certificates-java'的形式运行并带有引号,但即使虽然它在实际运行时正确地表现得好像引号就在那里,但 Docker 在打印错误消息时将它们排除在外)。 -
...你能分享一个生成错误的 Dockerfile 吗? (可以将其缩减为minimal reproducible example,并删除所有不是生成相关错误所必需的命令)。
-
你在构建什么
FROM?即debian:buster(-slim)(以及基于即python:3.7-slim的图像)在apt存储库中没有openjdk-8-jre-headless(撞墙,升级到openjdk-11)参考。 online package search。不,docker使用您正在构建的操作系统的 repoFROM。 -
如何查看Dockerfile上的安装包? java -version 给出关于 java.. 的错误。
标签: java ubuntu docker-compose dockerfile