如果我们不为 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 build
和 docker 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
如果我指定以下基础镜像,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 build
和 docker 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