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

use*_*400 8 java-8 docker

我有一个以以下行开头的dockerfile

FROM java:8

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

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

ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

bud*_*123 5

也许你错过了一些东西. 8标记或8-jdk工作正常:

$ docker run -ti java:8-jdk
root@ea4ae4cf642e:/# echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

您还可以通过查看Dockerfile来验证它是否确实定义了JAVA_HOME.例如,请参阅java:8 Dockerfile

此外,最简单的Dockerfile形式当然会评估相同的结果.即:

FROM java:8-jdk
CMD ["/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

并按以下方式构建:

$ docker build -t myjava .
Run Code Online (Sandbox Code Playgroud)

然后,执行它:

$ docker run -ti myjava:latest bash
root@3c35f7d2d94a:/# echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)


Ati*_*ain 5

将以下设置添加到您的 DockerFile 以在您的 Docker 容器中安装 openjdk 8。

# Install "software-properties-common" (for the "add-apt-repository")
RUN apt-get update && apt-get install -y \
    software-properties-common

# Add the "JAVA" ppa
RUN add-apt-repository -y \
    ppa:webupd8team/java

# Install OpenJDK-8
RUN apt-get update && \
    apt-get install -y openjdk-8-jdk && \
    apt-get install -y ant && \
    apt-get clean;

# Fix certificate issues
RUN apt-get update && \
    apt-get install ca-certificates-java && \
    apt-get clean && \
    update-ca-certificates -f;

# Setup JAVA_HOME -- useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的,该回购已停止。阅读此处:https://launchpad.net/~webupd8team/+archive/ubuntu/java。引文:适用于 Oracle Java SE 的新 Oracle 技术网络许可协议与之前的 Oracle JDK 许可有很大不同。新许可证允许免费使用某些用途,例如个人使用和开发用途,但根据之前的 Oracle JDK 许可证授权的其他用途可能不再可用。下载和使用本产品之前,请仔细阅读条款。 (5认同)