Я установил докер на Arch OS и уже некоторое время использую докер. В последнее время 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
больше не работает и контейнер автоматически останавливается через секунду. Затем я попробовал решение, данное здесь. Добавив tail -f /dev/null
в конец моей предыдущей команды. Теперь контейнер запускается, но я ничего не получаю при переходе на localhost:9200.
Не удалось запустить док-контейнер elasticsearch
Ответы (4)
Наткнулся на ту же проблему с командой ниже
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.4
Моя среда — докер на MacOS. Согласно разделу «Для тех, кто использует Windows или OSX» в этой статьи Память Docker должна быть не менее 4 ГБ. После изменения лимита памяти контейнер запустился без проблем.
Есть проблема с установкой ES_JAVA_OPTS
при запуске образа, должно быть:
docker run -d -p 9200:9200 -p 9300:9300 -e 'ES_JAVA_OPTS: -Xms1g -Xmx1g' elasticsearch:5.1
Docker
контейнеру.
- person Arpit Aggarwal; 22.07.2017
в моем случае это была проблема с разрешением, поэтому я добавил разрешение рядом с томом:
этот: //чтение, запись и выполнение
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
После долгих исследований я попробовал следующее. Теперь это работает для меня. Во-первых, убедитесь, что у вас установлена Java, если вы используете Elastic Search 5 или 6. Для версии 7 она нам специально не нужна.
Сделайте службу активной: откройте файл yml в редакторе nano для следующих настроек.
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: []
Подтвердите конфигурацию файла jvm.options в '/etc/elasticsearch/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 ГБ оперативной памяти, поэтому выделено 4 ГБ. Не стесняйтесь выделять -Xms2048m
и -Xmx2048m
и так далее в наборе {1024м, 750м, 512м, 256м}. Этого требует ваш выбор использования.
После исправления вышеуказанного выполните следующие команды и перезагрузите систему. Нам нужно перезапустить, так как мы отредактировали общесистемную конфигурацию среды, чтобы она вступила в силу.
Установка через докер и другие среды одновременно не проблема. Но запуск службы обоими способами приводит к конфликтам, поскольку TCP-порт, который прослушивает, не может быть продублирован. Короче говоря, запустите службу эластичного поиска либо из образа, извлеченного докером, либо из вашей локальной установки. Не то и другое одновременно. Если у вас есть ошибки, связанные с дублированием портов, обязательно нажмите следующую команду:
sudo systemctl stop elasticsearch.service
Чтобы Elasticsearch автоматически перезагружался при перезапуске системы, используйте следующие команды: (Если установлен с помощью wget и apt/из двоичных файлов/любой другой процесс установки эластичного поиска, кроме извлечения образа докера. Для докера достаточно просто перезагрузить daemon-d (1-я команда )):
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Это сработало для меня хорошо. Я надеюсь, что это проясняет проблему.
tail
. Это, конечно, не то, что вы хотите. Всегда убедитесь, что понимаете, что делает команда, прежде чем вводить ее. - person Henry   schedule 22.07.2017