Giter Club home page Giter Club logo

elasticsearch-kibana-docker's Introduction

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 [email protected]: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へ接続できなくてハマった

参考

elasticsearch-kibana-docker's People

Contributors

sugikeitter avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.