Elasticsearch в Docker
Тема дорожной карты · Elasticsearch
Запуск Elasticsearch в Docker — это самый быстрый способ поднять локальный экземпляр поискового движка для разработки без установки системных пакетов и настройки JVM. Официальный Docker-образ Elasticsearch публикуется по адресу docker.elastic.co/elasticsearch/elasticsearch и может быть запущен одной командой docker run с указанием обязательных переменных окружения: discovery.type=single-node и ES_JAVA_OPTS. Для многоузловых кластеров Elasticsearch в Docker рекомендованный подход — файл docker-compose.yml, позволяющий определить несколько сервисов, общую Docker-сеть и именованные тома для постоянного хранения данных. Файл конфигурации elasticsearch.yml может быть передан в контейнер через монтирование Docker-тома по пути /usr/share/elasticsearch/config/elasticsearch.yml, что даёт полный контроль над настройками кластера без пересборки образа. При запуске Elasticsearch в Docker в продуктивной среде также необходимо установить параметр ядра хоста vm.max_map_count в значение не менее 262144 командой sysctl -w vm.max_map_count=262144: поисковый движок требует этого параметра для корректной работы.
Как это работает
Elasticsearch в Docker: установка на Linux через tarball, apt/yum, Docker-образ или Helm chart для K8s. Конфигурация в elasticsearch.yml — cluster name, node roles, paths, network, discovery. Docker ок для local dev, но в prod экспонирует volume + UID issues. Kibana — UI: Dev Tools console для ad-hoc queries, Discover для log exploration, Dashboards для визуализации. Для production предпочитайте ECK (Elastic Cloud on Kubernetes) или Helm-managed кластеры перед hand-rolled tarball-установками.
Когда применять
Pin Elasticsearch + Kibana на ТУ ЖЕ major.minor версию (Kibana проверяет). Выставьте vm.max_map_count=262144 на хосте (иначе контейнер не стартует). Отключите swap, heap = 50% RAM (max 31GB). Для prod — на dedicated железе или guaranteed-resource VM — соседи убивают ES.
Типичные ошибки
Ловушки Elasticsearch в Docker: ES + другие сервисы на одном хосте (resource-fights → кластер нестабилен); security отключён (8.x по дефолту on — не выключайте); heap > 32GB (теряет compressed oops, perf падает); игнор vm.max_map_count (тихие сбои).