当前位置: 首页 > 知识库问答 >
问题:

Docker elasticsearch 1.7可执行文件未在$PATH中找到“

怀宇
2023-03-14

我正在尝试为elasticsearch 1.7运行docker容器。下面是我的Dockerfile:

FROM ubuntu:16.04

RUN apt-get update \
    && apt-get install -y curl zip unzip vim software-properties-common \
    && echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
    && add-apt-repository -y ppa:webupd8team/java \
    && apt-get update \
    && apt-get install -y oracle-java8-installer \
    && wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add - \
    && echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" |  tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list \
    && apt-get update \
    && apt-get install -y elasticsearch \
    && echo "network.host: localhost" >> /etc/elasticsearch/elasticsearch.yml


EXPOSE 9200

CMD ["elasticsearch"]

Docker build运行良好。但是docker run命令给了我这个错误:来自守护进程的错误响应:oci运行时错误:container\u linux。go:265:启动容器进程导致“exec:\“elasticsearch\”:在$PATH中找不到可执行文件”

我使用的Mac和Docker版本是:17.09.0-ce

共有1个答案

夏谦
2023-03-14

这是几天前的事了-你解决了吗?错误消息准确地说明了问题所在(尽管我不确定为什么这是一个问题)。

我基于此进行了docker构建。这是$PATH

root@96f969e3ab3d:/# echo $PATH
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

以下是elasticsearch的安装位置(显然):

root@96f969e3ab3d:/# find / -name 'elasticsearch' -type f
> /etc/default/elasticsearch
> /etc/init.d/elasticsearch
> /usr/share/lintian/overrides/elasticsearch
> /usr/share/elasticsearch/bin/elasticsearch

基于此,看起来elasticsearch安装在/usr/share/elasticsearch/bin/elasticsearch。我认为最简单的解决方案是将CMD设置为完整路径:

CMD ["/usr/share/elasticsearch/bin/elasticsearch"]

也就是说,elasticsearch需要很多其他数据——仅仅运行该命令似乎不起作用。基于dockerfile的复杂程度,以及我在/etc/init中看到的内容。d/elasticsearch(如果安装在服务器上而不是容器中,elasticsearch将以这种方式运行),我建议使用他们的官方容器,而不是尝试构建自己的容器。

 类似资料:
  • 我已经检查了垃圾箱,里面没有ping

  • 我有一个docker映像,它安装了,但是当我试图运行它时,我得到了一个错误: 如果我在交互模式下运行bash,则可用。 我做错了什么? 这是我的Dockerfile:

  • 我有一个运行在Docker容器中的uwsgi服务,我想用它来服务django应用程序。当我在本地运行uwsgi服务时,一切正常,但是从docker容器中我得到消息和,django应用程序显示内部服务器错误。这是我的uwsgi.ini文件。在docker容器中,我使用类似于

  • 在Amazon SageMaker中,我试图部署一个带有Scikit学习模型的自定义创建的Docker容器,但是部署总是出错。 以下是我的步骤: > 在我的本地机器上创建了一个脚本(script.py),并分割了培训和测试数据。该脚本包含一个主要部分,接受参数“输出列车dir”、“模型dir”、“列车”和“测试”,并包含函数模型fn、输入fn、输出fn和预测fn 在本地测试了脚本,效果良好 pyt

  • 问题内容: 我有一个安装的docker映像,但是当我尝试运行它时,出现错误: 如果我以交互模式运行bash,则可用。 我究竟做错了什么? 这是我的Dockerfile: 问题答案: 当您将exec格式用于命令(例如,带双引号的JSON数组)时,将在 没有 外壳的 情况下 执行该命令。这意味着大多数环境变量将不存在。 如果您将命令指定为常规字符串(例如),则之后的字符串将使用来执行。 有关更多信息,

  • 我已经通过libav-tools对安装了ffmpeg的应用程序进行了dockerize。该应用程序启动时没有问题,但是当Fluent-ffmpeg npm模块试图执行ffmpeg命令时出现了问题,但没有找到。当我想检查ffmpeg的版本和图像中设置的linux发行版时,我使用了命令,但它给出了以下错误: 然后我意识到,我尝试在图像或容器中运行的所有命令都会出现同样的错误。 这是我的Dockerfi