Elasticsearch — известная аналитическая поисковая система с открытым исходным кодом, которая часто используется в областях искусственного интеллекта и машинного обучения. Обычно он хранит неструктурированные, полуструктурированные и структурированные данные. Многим пользователям необходимо установить и использовать Elasticsearch в контейнерах Docker, чтобы выполнять его в изолированных средах.
Однако при выполнении Elasticsearch в контейнере Docker на базе Linux пользователи могут столкнуться с « Elasticsearch не завершился нормально ” по неизвестной причине и предлагаем вам проверить “ докер-кластер.log ' файл.
В этой статье будет продемонстрирован метод решения проблемы « Elasticsearch не завершился нормально ” при выполнении контейнера Elasticsearch в Docker.
Как устранить ошибку «Elasticsearch не завершился нормально» при выполнении Elasticsearch Docker Container?
Иногда контейнер Elasticsearch не запускался нормально из-за того, что он выполнялся в контейнере Linux, и по умолчанию его предел виртуальной памяти слишком мал. Это может помешать правильному выполнению контейнера и отобразить сообщение об ошибке « Elasticsearch не завершился нормально ' как показано ниже:
Чтобы решить указанные проблемы, пользователь может увеличить количество mmap виртуальной памяти для контейнера Linux, выполнив следующие действия.
Шаг 1. Запустите настольное приложение Docker с помощью WSL
Сначала запустите Docker Desktop с помощью WSL. Это позволяет нам запускать контейнеры Linux и управлять ими в Windows:
wsl -д докер-рабочий стол
Шаг 2: Увеличьте виртуальную память
Затем выполните приведенную ниже команду, чтобы увеличить лимит виртуальной памяти для контейнеров Linux:
sysctl -В vm.max_map_count= 262144
После этого выполните команду «exit» для выхода из WSL:
Шаг 3: Создайте сеть
Теперь создайте сеть для контейнера Elasticsearch Docker. Это необязательно, но может быть полезно для целей резервного копирования для сетей Elasticsearch:
сеть докеров создает эластичную
Шаг 4: Запустите Elasticsearch
Теперь запустите образ Elasticsearch, чтобы установить и запустить поиск Elastic в контейнере:
докер запустить --имя es01 --сеть эластичный -п 9200 : 9200 -п 9300 : 9300 -т docker.elastic.co / эластичный поиск / эластичный поиск: 8.8.2
В приведенной выше команде:
- “ -имя ” указывает имя контейнера Elasticsearch.
- “ -сеть ” используется для встраивания внешней сети.
- “ -п » определяет порты контейнера Elasticsearch.
- “ -т ” используется для присвоения “ TTY-псевдо терминал к контейнеру:
Приведенный ниже вывод показывает, что мы успешно запустили контейнер Elasticsearch и разрешили « Elasticsearch не завершился нормально ' ошибка.
Здесь контейнер сгенерирует « эластичный » пароль пользователя. Используя эти учетные данные, пользователь может получить доступ к Elasticsearch в браузере. Это также сгенерирует токен для настройки Kibana:
Шаг 5: Проверка
Перейдите к ' http://localhost:9200 ” в вашем браузере и проверьте, выполняется ли контейнер на указанном порту или нет:
Приведенный выше вывод указывает на то, что мы успешно запустили контейнер в порту. 9200 ' и разрешил ' Elasticsearch не завершился нормально ' ошибка.
Заключение
Чтобы решить « Elasticsearch не завершился нормально », пользователи должны увеличить лимит виртуальной памяти для контейнера Linux. Для этого сначала запустите рабочий стол Docker с помощью WSL, используя « wsl -d докер-рабочий стол команда. После этого увеличьте лимит виртуальной памяти с помощью « sysctl -w vm.max_map_count = 262144 команда. Затем снова запустите образ, чтобы создать и запустить контейнер Elasticsearch. Этот пост иллюстрирует метод исправления ошибки «Elasticsearch не завершился нормально».