Java8的基础镜像已经安装了java7的docker

我试图用这里描述的提供的java8基础镜像创build一个自定义的镜像镜像。

以下是我所做的尝试

  • FROM java
  • FROM java:latest
  • FROM java:8
  • FROM java:8-jdk

当图像被创build时,我检查了安装的Java版本( java -version ),所有这些都返回

 java version "1.7.0_101" OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-1~deb8u1) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode) 

这是造成问题,因为我的应用程序被编译为使用Java 1.8。 什么java的图像应该用于实际上在容器上获得java8?

那些应该工作,并为我工作。 你确定你正在build设和运行新的形象?

 $ echo "FROM java:latest" > Dockerfile $ docker build -t test . ... $ docker run --rm test java -version openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-1~bpo8+1-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 

您可以使用docker inspect查看有关本地图像的信息。 如果您检查其中一个Java映像,您应该在环境中使用Java版本:

 $ docker inspect java:latest ... "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64", "JAVA_VERSION=8u91", "JAVA_DEBIAN_VERSION=8u91-b14-1~bpo8+1", ... 

如果你使用docker inspect来查看你的图像,你也应该看到这些env vars,并且还可以比较用于Java图像的图层来试着看看发生了什么。

你列出的所有图像都应该运行java 8.确保你正在构build镜像并在更新Dockerfile后在新容器中运行它。

 echo "FROM java:8" > Dockerfile docker build -t my-java:latest . docker run --rm my-java:latest java -version