Официальные образ Elasticsearch и Kibana для Docker доступны по адресу https://www.docker.elastic.co/ именно их мы и будем использовать при развертке сервисов.
Там же на сайте мы можем узнать последнюю версию нужного продукта:
Запуск Elasticsearch в Docker
Приступим и настроим кластер Elasticsearch из одного узла, для этого будем использовать файл docker-compose.yml, создадим каталог elastic:
mkdir -p /elastic
Перейдем в созданный каталог:
cd /elastic
И с помощью nano создадим файл docker-compose.xml:
version: '2.2'
services:
node01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
container_name: node01
environment:
- node.name=node01
- cluster.name=es-cluster-7
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms128m -Xmx128m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es-data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- es-network
volumes:
es-data01:
driver: local
#external: true
networks:
es-network:
driver: bridge
Файл docker-compose определяет, какие сервисы и контейнеры будут запускаться с какими ресурсами (например, с томами данных и сетями).
Если посмотреть на приведенный выше файл, то в разделе environment мы указываем конфигурации elasticsearch.
Мы просто указываем имя узла, имя кластера и самую важную конфигурацию «discovery type». Поскольку мы собираемся запустить кластер из одного узла, тип обнаружения должен быть «single-node».
Теперь развернем нашу ноду:
docker-compose up
Для проверки выполним команду:
curl localhost:9200
Мы должны получить аналогичный вывод:
{
“name” : “node01”,
“cluster_name” : “es-cluster-7”,
“cluster_uuid” : “Uz5DlxTDSlG4mjE_IJufrg”,
“version” : {
“number” : “7.11.1”,
“build_flavor” : “default”,
“build_type” : “docker”,
“build_hash” : “ff17057114c2199c9c1bbecc727003a907c0db7a”,
“build_date” : “2021–02–15T13:44:09.394032Z”,
“build_snapshot” : false,
“lucene_version” : “8.7.0”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}
Мы только что запустили наш кластер Elasticsearch. Теперь необходимо подключить к этому кластеру экземпляр Kibana, чтобы мы могли создавать запросы в пользовательском интерфейсе, а не в командной строке.
Чтобы завершить работу кластера, выполните следующее:
docker-compose down
Запуск Kibana в Docker
Отредактируем уже созданный нами файл docker-compose.yml и добавим в него сервис kibana:
version: '2.2'
services:
node01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
container_name: node01
environment:
- node.name=node01
- cluster.name=es-cluster-7
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms128m -Xmx128m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es-data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- es-network
kibana:
image: docker.elastic.co/kibana/kibana:7.11.1
environment:
ELASTICSEARCH_HOSTS: http://node01:9200
ports:
- 5601:5601
networks:
- es-network
depends_on:
- node01
volumes:
es-data01:
driver: local
networks:
es-network:
driver: bridge
Запустите обе службы с помощью команды:
docker-compose up
В течение минуты или двух мы должны увидеть журналы, отображающие состояние нашего кластера Elasticsearch, а также процесс запуска Kibana.
Чтобы получить доступ к экземпляру Kibana, откройте веб-браузер и введите:
http://localhost:5601
Теперь мы можем запускать запросы в визуальном интерфейсе!