java - 在 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
?
解决方案
由于 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
.
推荐阅读
- awk - 条件内的 awk 循环
- c# - 如何将原始查询字段映射到实体的类字段?
- angular - Angular:HTTP GET 请求 - OPTIONS 405(不允许的方法)
- java - Java 套接字 Json
- java - 如何使用 mockito 模拟注入对象的属性
- javascript - Angular 7:NullInjectorError:PagerService 没有提供者
- html - 没有表格单元格和行高的垂直居中文本?
- microsoft-graph-api - Microsoft Graph API:通过多个字段使用 $search 进行查询
- mysql - Liquibase 将列默认值设置为 null
- javascript - Javascript 从 AD 容器更改名称格式