尝试在Docker上运行Elasticsearch + Kibana

※这篇文章已转移到个人博客上。

由于Docker Hub上有Elasticsearch和Kibana的官方镜像,所以我尝试使用它们。在这个README中有以下内容。

这是Elasticsearch的Docker Hub镜像的Git仓库。请查看Docker Hub页面,了解如何使用该Docker镜像的完整自述文件以及有关贡献和问题的信息。该Docker Hub镜像与上游Elastic没有合作或支持,上游Elastic提供了自己的官方镜像。

由于弹性公司独特提供的图像看起来像是官方的,所以我们会进行更改。

前提 (Qiantí)

有Docker的执行环境。
由于有很多人已经写了Docker的执行环境设置的内容,所以暂不提供。
供参考,这里的环境是Mac OS X + VirtualBox + docker-machine。
※在安装Docker for Mac时,按照这个步骤存在一些微妙的地方,所以做了一些修改。(2016/11/4)
修改为使用Elastic公司公开的注册表,并将版本更改为5.4.1。此外,停止使用传统的link功能,改为使用Bridge网络。(2017/6/3)

操作步骤

确认容器执行环境

如果你的Mac上有Docker等本地环境,则不需要。

$ docker-machine env test-machine
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/tsukapah/.docker/machine/machines/test-machine"
export DOCKER_MACHINE_NAME="test-machine"
# Run this command to configure your shell:
# eval "$(docker-machine env test-machine)"

创建Bridge网络

$ docker network create elasticsearch --driver bridge
1c00368f055cd86e40da5db8b9e41211abc2821763b604a2583c054c6ecbcb22

启动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:5.4.1
931bceaa78bf8129c59989116dc1aa2698382315246a5635b06b9b787e5c1f77

确认Elasticsearch的操作

$ curl $(docker-machine ip test-machine):9200
{
  "name" : "6Y9ph9_",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "IWB-HjK9Q3-x5OS6Fh4rPg",
  "version" : {
    "number" : "5.4.1",
    "build_hash" : "2cfe0df",
    "build_date" : "2017-05-29T16:05:51.443Z",
    "build_snapshot" : false,
    "lucene_version" : "6.5.1"
  },
  "tagline" : "You Know, for Search"
}

对于像Docker for Mac这样的情况,目标地址将是localhost:9200等。

启动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:5.4.1
81db2e8f947ae24ef1cb50dbabc6b13e0fe62233c36a2c47de725fe048152457

尝试连接到Kibana

$ open http://$(docker-machine ip test-machine):5601

对于类似Docker for Mac的情况,目标地址将会是localhost:5601之类的。

Kibana5.0.0.png

我们可以随意将数据投入到Elasticsearch中。由于将X-Pack的安全性设置为false,因此无需验证即可投入数据。

印象

思想到以前在EC2上玩弄的事情,现在看来超级简单。
只需要通过docker pull将镜像取到手,即使没有网络连接,也能进行各种尝试,这真是令人开心啊。
关于Elasticsearch + Docker,我打算逐渐尝试更改集群名称、集群化和数据持久化等功能。
由于Kibana对Elasticsearch的版本有较强的依赖性,如果不使用最新版本的镜像,最好注意版本管理。我认为可以通过使用Docker Compose来以代码方式进行管理。

我写了关于聚类的内容。