docker - 使用 docker 安装 java 8 的最佳方法?

标签 docker java-8

我有一个以下行开头的 dockerfile

FROM java:8

我认为这应该从 docker 容器注册表中提取图像并安装。没有?

当我在容器中运行 java 命令时,出现以下错误

ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

使用docker安装java 8(openjdk版本)最简单最好的方法是什么?

更新:

RUN apt-get install -y --no-install-recommends software-properties-common
RUN add-apt-repository -y ppa:openjdk-r/ppa
RUN apt-get update
RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y openjdk-8-jre
RUN update-alternatives --config java
RUN update-alternatives --config javac

最佳答案

也许你错过了什么。 8 标签或 8-jdk 工作正常:

$ docker run -ti java:8-jdk
root@ea4ae4cf642e:/# echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64

您还可以通过查看 Dockerfile 来验证它确实定义了 JAVA_HOME。例如,见 java:8 Dockerfile

此外,最简单的 Dockerfile 形式当然会得到相同的结果。即:

FROM java:8-jdk
CMD ["/bin/bash"]

并以以下方式构建:

$ docker build -t myjava .

然后,执行它:

$ docker run -ti myjava:latest bash
root@3c35f7d2d94a:/# echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64

关于docker - 使用 docker 安装 java 8 的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587850/

相关文章:

java - 为什么我不能在 Java 8 中继续使用带有 Collections#forEach 的标签?

docker - 如何在Kubernetes中分离应用程序和数据同步实现?

linux - 无法评估 Dockerfile 路径 : lstat <path> no such file or directory 中的符号链接(symbolic link)

reactjs - Docker 与子目录组合并实时重新加载

lambda - 使用 Java 8 lambda 编写通用方法来对任何其他方法进行计时

java - 使用流处理异常

docker - 无法将Docker镜像推送到Openshift Origin Docker注册表

docker - 提交错误-使用Docker Toolbox和Windows 7时如何增加Docker默认容器大小

将 Double 转换为 Int 的 Java 标准

java - 我可以在映射时减少吗?