首页 > 解决方案 > 在 docker logstash 上显示 java 版本

问题描述

上下文:需要提高运行 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.0等等7.11.0,似乎是一样的,无法检查。如何检查 java 版本以获取更高版本的 logstash 版本7.9.x

标签: javadockerlogstash

解决方案


由于 7.10 版本的 Logstash 使用捆绑的 java,这就是为什么您可以java在使用 7.9 docker 映像而不是使用高于该版本的版本时运行命令的原因。

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

从版本 7.10 开始,yum由于使用了捆绑的 java,因此未安装 java,因此二进制文件在环境变量java中不可用。PATH

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


推荐阅读