我正在尝试为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构建工作正常。但是 docker run 命令给了我这个错误:来自守护进程的错误响应:oci运行时错误:container_linux.go:265:启动容器进程导致" exec:\&#34 ; elasticsearch \":$ PATH"
中找不到可执行文件我正在使用Mac和Docker版本是:17.09.0-ce
答案 0 :(得分:1)
这已经有几天了 - 你解决了吗?错误信息确切地说明问题是什么(虽然我不确定为什么这是一个问题)。
我基于此做了一个docker构建。这是$PATH
:
root@96f969e3ab3d:/# echo $PATH
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
这是弹性搜索安装的地方(显然):
root@96f969e3ab3d:/# find / -name 'elasticsearch' -type f
> /etc/default/elasticsearch
> /etc/init.d/elasticsearch
> /usr/share/lintian/overrides/elasticsearch
> /usr/share/elasticsearch/bin/elasticsearch
基于此,看起来弹性搜索安装在/usr/share/elasticsearch/bin/elasticsearch
。我认为最简单的解决方案是将CMD
设置为完整路径:
CMD ["/usr/share/elasticsearch/bin/elasticsearch"]
话虽这么说,elasticsearch还有很多其他需要的数据 - 只是运行该命令似乎不起作用。基于how complex their dockerfile是基于我在/etc/init.d/elasticsearch
中看到的内容(如果安装在服务器而不是容器内,弹性搜索将如何运行),我将推荐使用他们的官方容器而不是试图建立自己的容器。