我已经在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
答案 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
内存分配 Xms
和 Xmx
:
分配必要的内存不超过 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
它对我很好。我希望这能澄清问题。