Windows 10のlinuxコンテナーでDockerデスクトップを使用していて、docker composeファイルで最新バージョンのelasticsearchおよびkibanaコンテナーを起動したいと思います。
6.2.4のような古いバージョンを使用すると、すべてが正常に動作します。
これは、6.2.4で動作するdocker-compose.ymlファイルです。
version: '3.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
ports:
- "9200:9200"
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
networks:
- docker-network
kibana:
image: docker.elastic.co/kibana/kibana:6.2.4
container_name: kibana
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- docker-network
networks:
docker-network:
driver: bridge
volumes:
elasticsearch-data:
インストールされているすべてのDockerコンテナーを削除し、6.2.4を7.0.1に変更してdocker-compose.ymlファイルを調整しました。新しい構成ファイルを開始すると、すべてが正常に表示され、elasticsearchコンテナーとkibanaコンテナーの両方が開始されます。しかし、数秒後にelasticsearchコンテナーが終了します(kibanaコンテナーはさらに実行中です)。すべてを再起動し、端末をelasticsearchコンテナーに接続して、次のエラーメッセージを確認しました。
...
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
...
Elasticsearch 7.0.1を機能させるには、docker-compose.ymlファイルで何を変更する必要がありますか?
いくつかの変更を加えるとうまくいきました-
追加 cluster.initial_master_nodes
composeのelasticsearchサービスに-
environment:
- cluster.initial_master_nodes=elasticsearch
vm.max_map_count
Linuxボックスのカーネル設定で、少なくとも262144に設定する必要があります-
$ Sudo sysctl -w vm.max_map_count=262144
開発モードでは、以下の設定も使用できます-
environment:
- discovery.type=single-node
作業用の作成ファイル-
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
container_name: es01
environment:
- cluster.initial_master_nodes=es01
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200
本番モードの場合、公式ドキュメントで提案されているように、複数のESノード/コンテナを使用することを検討する必要があります
https://www.elastic.co/guide/en/elasticsearch/reference/7.0/docker.html#docker-cli-run-prod-mode