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

我正在尝试为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_linux.go:265:启动容器进程导致“exec:\”elasticsearch \“:可执行文件未在$ PATH中find”

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

这已经过了几天了 – 你解决了吗? 错误消息确切地说明问题是什么(虽然我不确定为什么这是一个问题)。

我做了一个基于此的docker构build。 这是$PATH

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

这里是弹性search的安装(显然):

 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 。 我认为最简单的解决scheme是将CMD设置为完整path:

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

这就是说,elasticsearch有很多其他的数据需要 – 只是运行该命令似乎没有工作。 根据dockerfile的复杂程度 ,以及我在/etc/init.d/elasticsearch (这是在安装在服务器上而不是在一个容器内的情况下如何运行elasticsearch )的内容,我要推荐使用他们的官方容器,而不是试图build立自己的。