使用Docker Compose在中运行Elasticsearch + Kibana

概括

Docker Composeを利用して、Elasticsearchを3ノード1クラスタ構成で起動させた

Kibanaも立ち上げて、Elasticsearchと連携させた

Docker Composeの設定値について、自分の理解した内容をまとめた

更新记录

    • 2020/06/07

Elasctic Stackのver.を6.3.1=>7.7へ変更
Docker Compose(Mac)のver.を1.22.0=>1.25.5で動作確認

GitHub = GitHub
杰特哈布

    https://github.com/sugikeitter/elasticsearch-kibana-docker

环境

    • Elasticsearch 7.7.1

 

    • Kibana 7.7.1

 

    Docker Compose 1.25.5

所需的文件

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

确认操作

开始

使用以下步骤启动Elasticsearch和Kibana的容器:

# リポジトリを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文件在这里。

服务

    • この下にコンテナを定義していく

ここで定義したservice名はコンテナ間で通信する時のホスト名のような役割になる

下で出てくるcontainer_nameと違い、Docker Composeで利用される名称
ElasticSearchの設定であるnode.nameやdiscovery.seed_hostsの値をコンテナ間の通信する時の名前として利用するようなので、serviceの名前とこの設定値は合わせておいた方が良い

今回の場合だとes01, es02, es03, kibana01という4つ定義している

建设

    • 指定したディレクトリのDockerfileを利用してコンテナを起動させることができる

Elasticsearchプロセス用のコンテナは3つあるが、今回は3つとも利用するDockerイメージは同じにしているため、全て./esを指定する

つまり./es/Dockerfileからコンテナを起動する

Kibanaプロセス用のコンテナは./kibanaを指定し、./kibana/Dockerfileからコンテナを起動する

容器名称 qì

docker psした時に表示されるdockerコンテナの名前

Docker ComposeではなくDocker側の機能で、同一ホストマシン上では同じ名前のコンテナは複数起動できないので注意

环境

    • 環境変数を追加することができる

今回は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

网络

Docker Composeの中でさらにネットワークを分けられる設定
トップレベルのnetworksにキーを設定しておき、serviceごとのnetworksでそれを利用することができる
これをserviceに設定すると、同じキーを設定していないserviceからは接続できない

最初kibana01でnetworksを設定していなかったのでKibana->Elasticsearchへ接続できなくてハマった

请参考

    • Install Elasticsearch with Docker

 

    • Running Kibana on Docker

 

    • Compose file version 3 reference

 

    • はじめての Elasticsearch – Qiita

 

    Dockerを利用して Elasticsearch + Kibana の環境を作る – Qiita
广告
将在 10 秒后关闭
bannerAds