Skip to content
Elasticsearch + Kibana + Docker Compose
Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
es Fix setting name Jul 21, 2018
kibana Add elasticsearch cluster settings Jul 21, 2018
README.md Update README.md Jan 20, 2019
docker-compose.yml Update docker-compose.yml Jul 28, 2018

README.md

Elasticsearch + KibanaDocker Composeで動かす

概要

  • Docker Composeを利用して、Elasticsearchを3ノード1クラスタ構成で起動させた
  • Kibanaも立ち上げて、Elasticsearchと連携させた
  • Docker Composeの設定値について、自分の理解した内容をまとめた

GitHub

環境

  • Elasticsearch 6.3.1
  • Kibana 6.3.1
  • Docker Compose 1.22.0

必要なファイル

.
├── docker-compose.yml
├── es
│   ├── Dockerfile
│   └── config
│       ├── elasticsearch.yml  # 必要に応じて設定を追記する
│       └── log4j2.properties  # 必要に応じて設定を追記する
└── kibana
    └── Dockerfile

動作確認

起動

以下の手順でElasticsearchKibanaのコンテナを起動させる

## リポジトリをcloneして、docker-compose.ymlが配置されているディレクトリに移動
$ git clone git@github.com:sugikeitter/elasticsearch-kibana-docker.git
$ cd elasticsearch-kibana-docker

## docker-compose.ymlからDockerイメージをビルド
$ docker-compose build

## ビルドが成功したらコンテナ起動
$ docker-compose up

Kibanaへ接続

ブラウザでhttp://localhost:5601/へアクセス

docker-compose.ymlの設定について

今回作成したdocker-compose.ymlはこちら

services

  • この下にコンテナを定義していく
  • ここで定義したservice名はコンテナ間で通信する時のホスト名のような役割になる
    • 下で出てくるcontainer_nameと違い、Docker Composeで利用される名称
  • 今回の場合だとelasticsearch01, elasticsearch02, elasticsearch03, kibana01という4つ定義している

build

  • 指定したディレクトリのDockerfileを利用してコンテナを起動させることができる
  • Elasticsearchプロセス用のコンテナは3つあるが、今回は3つとも利用するDockerイメージは同じにしているため、全て./esを指定する
    • つまり./es/Dockerfileからコンテナを起動する
  • Kibanaプロセス用のコンテナは./kibanaを指定し、./kibana/Dockerfileからコンテナを起動する

container_name

  • docker psした時に表示されるdockerコンテナの名前
  • Docker ComposeではなくDocker側の機能で、同一ホストマシン上では同じ名前のコンテナは複数起動できないので注意

environment

  • 環境変数を追加することができる
    • 今回はES_JAVA_OPTSというElasticsearchで利用されるJava起動引数を追加で設定した
      • Elasticsearchとしてはjvm.optionsを利用すればJava起動引数を一括でまとめることもできる
      • 今回はデフォルトのjvm.optionsにヒープサイズだけ追加したかった(のとenvironment設定も使って見たかった)ため、これを利用した

ulimits

  • コンテナのulimitコマンドで設定できる値をデフォルト値から上書きする

volumes

  • ホスト側のファイルをコンテナ側へ渡したりできる
  • HOST:CONTAINERの順で設定
  • トップレベルのvolumesに名前を定義することで以下のことができる
    • 複数サービスをまたがってボリュームを利用
    • ホスト側へデータを永続化

port

  • 公開するポートの設定
  • HOST:CONTAINERの順で設定
  • 今回はelasticsearch0*はそれぞれポート9200を利用してプロセスを立ち上げているが、ホストマシン経由でコンテナへアクセスする場合にlocalhost:920[1,2,3]でそれぞれのコンテナのElasticsearchへアクセスできるように設定している
    • localhost:9201->elasticsearch01:9200
    • localhost:9202->elasticsearch02:9200
    • localhost:9203->elasticsearch03:9200

networks

  • Docker Composeの中でさらにネットワークを分けられる設定
  • トップレベルのnetworksにキーを設定しておき、serviceごとのnetworksでそれを利用することができる
  • これをserviceに設定すると、同じキーを設定していないserviceからは接続できない
    • 最初kibana01networksを設定していなかったのでKibana->Elasticsearchへ接続できなくてハマった

参考

You can’t perform that action at this time.