无法启动elasticsearch docker容器

时间:2017-07-22 08:24:11

标签: elasticsearch docker docker-container docker-volume

我已经在arch os上安装了docker,我现在已经使用了docker一段时间了。最近,docker run -v "$PWD/esdata":/usr/share/elasticsearch/data -d -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms1g -Xmx1g" elasticsearch:5.1不再有效,容器会在一秒内自动停止。然后我尝试了给出here的解决方案。将tail -f /dev/null添加到上一个命令的末尾。现在,容器运行但是当我去localhost:9200

时我什么都没得到

4 个答案:

答案 0 :(得分:1)

遇到与下面命令相同的问题

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.4

我的环境是MacOS上的docker。根据'对于那些使用Windows或OSX' this article中的部分Docker内存需要最小4GB。更改内存限制后,容器启动没有任何问题。

答案 1 :(得分:0)

在运行图片时设置ES_JAVA_OPTS时出现问题,应该是:

docker run -d -p 9200:9200 -p 9300:9300 -e 'ES_JAVA_OPTS: -Xms1g -Xmx1g' elasticsearch:5.1

答案 2 :(得分:0)

就我而言,这是一个权限问题,因此我在卷旁边添加了权限:

这一个: //读,写和执行

version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
    environment:
      - discovery.type=single-node
    volumes:
      - /home/shared-content-initiative/elasticsearch:/usr/share/elasticsearch/data //read, write and execute
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml


答案 3 :(得分:0)

经过大量研究,我尝试了以下方法。它现在对我有用。首先,如果使用 Elastic Search 5 或 6,请确保您是否安装了 Java。对于版本 7,我们不需要它。

激活服务: 在 nano 编辑器中打开 yml 文件进行以下设置。

sudo nano /etc/elasticsearch/elasticsearch.yml

确认以下设置:(取消注释以下几行,它们应该从头开始,没有任何空格)

# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
#
# Set a custom port for HTTP:
#
http.port: 9200

# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: []

在'/etc/elasticsearch/jvm.options'确认jvm.options文件的配置:

sudo nano /etc/elasticsearch/jvm.options

内存分配 XmsXmx: 分配必要的内存不超过 50% 以获得最佳性能。如果您知道 swappiness 和超时等,您可以调整其他设置,但如果您不确定,请不要触摸它们。

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g

我有一个 8 GB 内存,因此分配了 4 GB。在集合 {1024m, 750m, 512m, 256m} 中随意分配 -Xms2048m-Xmx2048m 等。这取决于您选择的用法。

解决上述问题后,运行以下命令并重新启动系统。由于我们编辑了系统范围的环境配置,我们需要重新启动才能生效。

通过 docker 和其他媒体同时安装不是问题。但是,从两种方式启动服务会产生冲突,因为侦听的 TCP 端口不能重复。简而言之,从 docker 拉取的镜像或本地安装运行弹性搜索服务。不能同时进行。如果您有关于重复端口的错误,请确保点击以下命令:

sudo systemctl stop elasticsearch.service

要在系统重新启动时自动重新加载 Elasticsearch,请使用以下命令:(如果通过 wget 和 apt / 从二进制文件 / 除 docker image pull 之外的任何其他弹性搜索安装过程安装。只需重新加载 daemon-d 对 docker 来说就足够了(第一个命令)):

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

它对我很好。我希望这能澄清问题。