尝试在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之类的。
我们可以随意将数据投入到Elasticsearch中。由于将X-Pack的安全性设置为false,因此无需验证即可投入数据。
印象
思想到以前在EC2上玩弄的事情,现在看来超级简单。
只需要通过docker pull将镜像取到手,即使没有网络连接,也能进行各种尝试,这真是令人开心啊。
关于Elasticsearch + Docker,我打算逐渐尝试更改集群名称、集群化和数据持久化等功能。
由于Kibana对Elasticsearch的版本有较强的依赖性,如果不使用最新版本的镜像,最好注意版本管理。我认为可以通过使用Docker Compose来以代码方式进行管理。
我写了关于聚类的内容。