如果我们不为 OpenJDK 指定 Docker 图像版本,将拉取哪个次要版本?

Which minor version would be pulled if we don't specify the Docker image version for OpenJDK?

如果我指定以下基础镜像,Java 的哪个次要版本会被拉取?

FROM adoptopenjdk/openjdk11:alpine-jre

同样,如果我指定以下内容,将拉取哪个次要版本:

FROM adoptopenjdk/openjdk11-openj9:alpine-jre

以上图像的文档:

或者我自己怎么识别?

如果我在页面上单击“alpine-jre”以查看 dockerfile (https://github.com/AdoptOpenJDK/openjdk-docker/blob/master/11/jre/alpine/Dockerfile.hotspot.releases.full),我会看到 java 版本为“jdk-11.0.11+ 9” 但是当我到达我的容器 shell 并检查那里的版本时,我看到版本“11.0.9.1”

对于这样的“浮动”标签,它将是打包的最新版本。

重要的是要注意 docker builddocker run 将只使用本地图像,如果你有本地图像,所以如果你本地的图像使用 Java 11.0.9 并且有Docker Hub 上的更新版本为 11.0.11,您将使用稍旧的版本。有一个 docker build --pull 选项可以在构建之前在每 FROM 行上执行 docker pull,这将确保您拥有最新的基础图像。

既然你可以直接docker run基本图像,那么应该很容易弄清楚它里面有什么

docker run --rm adoptopenjdk/openjdk11:alpine-jre \
  java -version