Docker で ElasticSearch + Kibana 環境を構築してみた。

本業で ElasticSearch を使うシステム開発を行うことになった。 機能の POC を確認するため、 Docker で ElasticSearch と Kibana を起動することにした。 自分は Docker for Mac を利用している。

Note

Linux 環境や Mac ユーザだけど Docker for Mac を利用されていない方は、各コンテナに接続確認する場合の localhost 部分を適宜 $(docker-machine ip <machine-name>) に置換してください。

ネットワーク

複数のコンテナを利用するので、 Bridge ネットワークでコンテナ同士をつなぐ。

docker network create elasticsearch --driver bridge

コンテナ

ElasticSearch コンテナ起動

docker run -d \
    -e "http.host=0.0.0.0" \
    -e "transport.host=127.0.0.1" \
    -e "xpack.security.enabled=false" \
    -e "xpack.monitoring.enabled=false" \
    -e "xpack.watcher.enabled=false" \
    -e "xpack.graph.enabled=false" \
    -e "xpack.ml.enabled=false" \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -p 9200:9200 \
    -p 9300:9300 \
    --name elasticsearch \
    --network="elasticsearch" \
    docker.elastic.co/elasticsearch/elasticsearch:6.4.0

ElasticSearch コンテナが起動しているかを確認するには、

curl localhost:9200

でレスポンスを見てみる。 以下、みたいなレスポンスが返ってきた。

{
  "name" : "MAzzjYI",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "wEvHKuikQyeE1Ca7UogUZQ",
  "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Kibana コンテナ起動

docker run -d \
    --name kibana \
    -p 5601:5601 \
    -e "ELASTICSEARCH_URL=http://elasticsearch:9200" \
    -e "xpack.graph.enabled=false" \
    -e "xpack.security.enabled=false" \
    -e "xpack.ml.enabled=false" \
    --network="elasticsearch" \
    docker.elastic.co/kibana/kibana:6.4.0

Kibana が起動しているかはブラウザでチェックする。

open http://localhost:5601

f:id:toohsk:20180903203020p:plain

できた。

所管

恐らく本当は k8s とか何かしらのオーケストレーションツールを使って管理するのが望ましい気がする。 本当は kubernetes を使ってやりたいけど、一旦、次は docker-compose を使ってみようかな。