运行 Elasticsearch docker 带有 FROM Busybox 的容器

Run Elasticsearch docker container with FROM Busybox

我正在使用来自官方弹性图像的自定义图像:

docker.elastic.co/elasticsearch/elasticsearch:5.6.4

我有内存问题,所以在这张图片中,我没有 Java 工具来监控内存。

是否可以使用此图像,但基于 "bigger" 具有更多调试工具(如 busybox)的图像?

标准方法是通过创建自定义 docker 文件并安装您需要的工具来扩展此映像。

FROM elasticsearch:5.6.5
RUN <install tools you need>

elasticsearch镜像基于openjdk:8-jre,不包含jdk自带的开发工具。 如果您比较 openjdk-jdk and openjdk-jre 的 docker 文件,您可以看到 Java 安装在 /docker-java-home

因此您可以使用docker multi-stage build将jdk复制到弹性搜索图像上。

FROM openjdk:8-jdk as jdk

FROM elasticsearch:5.6.5
COPY --from=jdk /docker-java-home /docker-java-home

这会将 elasticsearch 映像中的 jre 安装替换为 jdk 版本,为您提供 java 开发工具。这可能是最简单的方法了。

最后,您可以执行 "brute force" 操作,通过将 elasticsearch docker file 中的 FROM openjdk:8-jre 替换为 FROM openjdk:8-jdk 来重建整个弹性搜索图像。