最近ElasticsearchとKibanaのDockerイメージに、DockerHubのものを使ってみたのですが
elasticsearch (OFFICIAL REPOSITORY)
@johtaniさんに怒られまして…。
ElasticsearchのDockerイメージ、自分でビルドして作ってたけど5系からsysctlのところでハマるようになって、DockerHubにあるの使うようにした
@kazuhira_r うちの使ってよ、、、
2016-12-23 11:40:10 via twicca to @kazuhira_r
あー、そういえば、あるって聞いたことあったような…。
調べてみると、確かに…。
Install Elasticsearch with Docker
Running Kibana on Docker » Pulling the image
Running Kibana on Docker » Configuring Kibana on Docker
Logstashもあるっぽい。
Docker Hubにあるわけじゃないんですねー(docker.elastic.co/elasticsearch/elasticsearch)。
日本語記事もあるし!
Elastic社公式のDockerイメージ(Beta版)が提供されるようになりました | Developers.IO
せっかくなので、試してみましょう。
Elasticsearch
ElasticsearchのDockerイメージをとりあえず使うには、こんな感じかと。
※-itと--rmは、好みで付けています
$ docker run -it --rm -p 9200:9200 -p 9300:9300 \ -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" \ docker.elastic.co/elasticsearch/elasticsearch:5.1.1
以下の「Development mode」を参考にしています。
Running Elasticsearch from the command line
これで、ElasticsearchのDockerイメージが起動します。
とりあえず、インデックスの一覧を見てみましょう。
$ curl http://localhost:9200/_cat/indices?v {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/_cat/indices?v]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/_cat/indices?v]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
すると、怒られます。このDockerイメージにはX-Packが入っているらしいので、Basic認証が必要ですと。
elasticユーザーのデフォルトのパスワードは、「changeme」だそうなので、こちらを指定することで確認できます。
$ curl -u elastic:changeme http://localhost:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open .monitoring-data-2 fdM11f1ZQbeXNzL_sUet-A 1 1 2 0 4.1kb 4.1kb yellow open .monitoring-es-2-2016.12.23 Z5u9HLHzQ7y3GWhPZQjKEA 1 1 93 4 81.1kb 81.1kb
ここでインストールされているX-Packはトライアル版なので、30日でexpireしますと。その場合は、サブスクリプションを
入手するか、X-Packを無効にするかを行う必要があるようです。
ここでは、X-Packを無効にしてみましょう。
Security Settings
「xpack.security.enabled=false」をelasticsearch.ymlに設定するか、環境変数に加えます。
$ docker run -it --rm -p 9200:9200 -p 9300:9300 \ -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" -e "xpack.security.enabled=false" \ docker.elastic.co/elasticsearch/elasticsearch:5.1.1
これで、Basic認証なしでもアクセスできるようになります。
$ curl http://localhost:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open .monitoring-data-2 Y97UMRbCSrap0j1M0Od2TA 1 1 2 0 3.9kb 3.9kb yellow open .monitoring-es-2-2016.12.23 ZzD-1-zaRpmTq5I8rcRkGw 1 1 37 4 141.7kb 141.7kb
自分はとりあえずお試し的に使っているので、こちらでもよいでしょう。
その他、elasticsearch.ymlの差し替え方などは、ドキュメントを参照してください、と。
Kibana
続いて、Kibana。とりあえず、こちらで起動します。
$ docker run -it --rm -p 5601:5601 docker.elastic.co/kibana/kibana:5.1.1
が、Elasticsearchとの接続も気になるので、Dockerコンテナのデフォルトを設定を見ると…
http://elasticsearch:9200 に、 elastic:changeme で接続しにいくようなので、Elasticsearchもコンテナ名「elasticsearch」で起動します。
※ここでは、X-Packは有効にしたままです
$ docker run -it --rm --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" \ docker.elastic.co/elasticsearch/elasticsearch:5.1.1
続いて、Kibana。Elasticsearchとリンクさせます。
$ docker run -it --rm -p 5601:5601 --link elasticsearch docker.elastic.co/kibana/kibana:5.1.1
この状態でKibanaにアクセスすると(http://localhost:5601/)、次のようなページが現れます。
ログインに関する情報は、デフォルトでElasticsearchと同様に「elastic / changeme」です。
X-Packについては、Elasticsearchの方で無効にすると、Kibanaにアクセスした際にはログインを
求められなかったみたいですが…?
kibana.ymlの差し替え方なども、ドキュメントを参照してください、と。
Docker Compose
Elasticsearch、Kibanaともにドキュメントに設定の方法が書いてあるので、こちらを参考にすると
よいかもです。
Environment variable configuration
とりあえず、手元で簡単に遊ぶ分には、こんなのでいいかなぁ?
docker-compose.yml
elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:5.1.1 ports: - "9200:9200" - "9300:9300" container_name: elasticsearch hostname: elasticsearch environment: - "ES_JAVA_OPTS=-Xms1g -Xmx1g" - "http.host=0.0.0.0" - "transport.host=127.0.0.1" - "xpack.security.enabled=false" kibana: image: docker.elastic.co/kibana/kibana:5.1.1 ports: - "5601:5601" container_name: kibana links: - elasticsearch