【问题标题】:Best way to install java 8 using docker?使用 docker 安装 java 8 的最佳方法?
【发布时间】:2016-08-03 22:14:03
【问题描述】:

我有一个以下行开头的 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

【问题讨论】:

  • 你不是说'apt-get -y install'吗?

标签: docker java-8


【解决方案1】:

也许你错过了什么。 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

【讨论】:

  • FROM java:8-jdk (我把它改成这个但没有效果) CMD [“/bin/bash”] (我没有这个但是为什么我需要这个就安装 java 8关心?)
  • @user1870400 你的 Dockerfile 看起来怎么样?你想做什么?拥有基于 Java 映像的容器仅意味着您将拥有预配置了所有 Java 依赖项的 Java 基础映像。其余的取决于你想要做什么。 FROM java:8-jdk 会给你安装在你的镜像中的java
  • 我的 docker 文件由一行 FROM java:8-jdk 组成,当我执行 docker build -t dockerfile 时。它构建得很好,然后当我执行 docker run -i -t --name hello dockerfile 我在容器内,现在当我输入 java 或 javac 或 echo $JAVA_HOME 时,它们都不起作用
  • @user1870400 这对我来说没问题。你的 docker 版本是多少?
  • Docker 版本 1.10.3
【解决方案2】:

将以下设置添加到您的 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

【讨论】:

  • 这是错误的,repo 已停止。在这里阅读:launchpad.net/~webupd8team/+archive/ubuntu/java。引用: Oracle Java SE 的新 Oracle 技术网络许可协议与之前的 Oracle JDK 许可有很大不同。新的许可允许某些用途,例如个人使用和开发用途,无需任何费用——但之前的 Oracle JDK 许可授权的其他用途可能不再可用。请在下载和使用本产品之前仔细阅读条款。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 2012-06-17
  • 2013-07-01
  • 2013-03-08
  • 2015-07-19
  • 2019-08-08
相关资源
最近更新 更多