Docker Compose
を利用して、Elasticsearch
を3ノード1クラスタ構成で起動させたKibana
も立ち上げて、Elasticsearch
と連携させたDocker Compose
の設定値について、自分の理解した内容をまとめた
- 2022/03/13
- Elasctic Stackのver.を
7.9.1
=>8.1.0
へ変更
- Elasctic Stackのver.を
- 2020/09/17
- Elasctic Stackのver.を
7.7
=>7.9.1
へ変更 - Docker Compose(Mac)のver.を
1.25.5
=>1.27.2
で動作確認
- Elasctic Stackのver.を
- 2020/06/07
- Elasctic Stackのver.を
6.3.1
=>7.7
へ変更 - Docker Compose(Mac)のver.を
1.22.0
=>1.25.5
で動作確認
- Elasctic Stackのver.を
- Elasticsearch 8.1.0
- Kibana 8.1.0
- Docker version 20.10.7
- Docker Compose 1.29.2
.
├── docker-compose.yml
└── .env # PASSWORD の設定が必要
以下の手順でElasticsearch
とKibana
のコンテナを起動させる
## リポジトリをcloneして、docker-compose.ymlが配置されているディレクトリに移動
$ git clone https://github.com/sugikeitter/elasticsearch-kibana-docker.git
$ cd elasticsearch-kibana-docker
## ELASTIC_PASSWORD と KIBANA_PASSWORD を設定
vi .env
## docker-compose.ymlからDockerイメージをビルドして起動
$ docker-compose up -d
## docker-compose.ymlからDockerイメージをビルドして起動(起動時のログが見たい場合)
$ docker-compose up
## クラスターを停止
$ docker-compose down
## クラスターを停止して起動したリソースを削除
$ docker-compose down -v
docker-compose up
してmax virtual memory areas vm.max_map_count [XXXXX] is too low, increase to at least [262144]
が出た場合、以下の設定でカーネル設定を変更する
$ sysctl -w vm.max_map_count=262144
- ブラウザで
http://localhost:5601/
へアクセスすると、起動に成功している場合は以下の画面が表示される
- 以下を入力して「Log in」
- Username : elastic
- Password :
.env
ファイルのELASTIC_PASSWORD
に設定した値
- この下にコンテナを定義していく
- ここで定義したservice名はコンテナ間で通信する時のホスト名のような役割になる
- 下で出てくる
container_name
と違い、Docker Compose
で利用される名称 - ElasticSearchの設定である
node.name
やdiscovery.seed_hosts
の値をコンテナ間の通信する時の名前として利用するようなので、serviceの名前とこの設定値は合わせておいた方が良い
- 下で出てくる
- 今回の場合だと
es01
,es02
,es03
,kibana01
という4つ定義している
- 環境変数を追加することができる
- 今回は
ES_JAVA_OPTS
というElasticsearch
で利用されるJava起動引数を追加で設定したElasticsearch
としてはjvm.options
を利用すればJava起動引数を一括でまとめることもできる- 今回はデフォルトの
jvm.options
にヒープサイズだけ追加したかった(のとenvironment
設定も使って見たかった)ため、これを利用した
- 今回は
- コンテナの
ulimit
コマンドで設定できる値をデフォルト値から上書きする
- ホスト側のファイルをコンテナ側へ渡したりできる
HOST:CONTAINER
の順で設定- トップレベルの
volumes
に名前を定義することで以下のことができる- 複数サービスをまたがってボリュームを利用
- ホスト側へデータを永続化
- 公開するポートの設定
HOST:CONTAINER
の順で設定- 今回は
es0*
はそれぞれポート9200
を利用してプロセスを立ち上げているが、ホストマシン経由でコンテナへアクセスする場合にlocalhost:920[1,2,3]
でそれぞれのコンテナのElasticsearch
へアクセスできるように設定しているlocalhost:9201
->es01:9200
localhost:9202
->es02:9200
localhost:9203
->es03:9200