在 docker logstash 上显示 java 版本

show java version on docker logstash

上下文:需要提升 logstash 映像 运行 所在的 Java 版本。我希望提升 logstash 映像版本会带来所需的 java 版本提升(期望的结果是提升到 java 11.0.12 或更高版本),但我什至不知道如何检查哪个版本java 的 运行.

目前正在使用 docker 图片 docker.elastic.co/logstash/logstash:7.14.2,但如何查看 java 版本?

https://github.com/elastic/logstash/issues/11907 之后,我尝试了这个:

docker run --rm -it docker.elastic.co/logstash/logstash:7.14.2 java -version,但这是结果:

/usr/local/bin/docker-entrypoint: line 14: exec: java: not found

然而,运行 docker run --rm -it docker.elastic.co/logstash/logstash:7.9.0 java -version 给出以下输出:

Status: Downloaded newer image for docker.elastic.co/logstash/logstash:7.9.0
openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode, sharing)

我不明白为什么 logstash docker 版本 7.9.0 可以识别 java -version 命令,但不能识别 7.14.2。我试过7.10.07.11.0等,好​​像是一样的,无法检查。如何检查 java 版本以获取超过 7.9.x 的 logstash 版本?

由于 7.10 版 Logstash 使用 bundled java,这就是为什么在使用 7.9 docker 图像时可以 运行 命令 java 而不是在使用更高版本时那。

直到 7.9 版,docker 映像安装 java 使用 yum 这使得 java 二进制文件在容器中全局可用,因为它的位置导出到 PATH环境变量。

从版本 7.10 开始,java 未通过 yum 安装,因为使用了捆绑的 java,因此 java 二进制文件在 [=13= 中不可用] 环境变量。

您需要 运行 java 二进制文件的完整路径,应该是 /usr/share/logstash/jdk/bin.