最近因为工作需要又一次用到elasticsearch,由于elasticsearch中的内容较为复杂,并且一直没有机会进行系统性的学习,所以,趁着摸鱼,准备通过docker搭建elasticsearch 以及Kibana。
docker镜像选择
最新的es镜像在哪里
安装前,简单在网上看了一些教程,基本上拉取镜像的过程都是直接略过,或者简单提到 docker pull elasticsearch
,但是在我实际拉取过程中,发现拉取速度极慢,且尝试多次,都以失败告终,起初以为是个网络原因,docker-hub访问慢,所以配置了阿里和网易的镜像源进行尝试,发现依然没有解决问题。最终产看elastic 官网,发现elastic的镜像并没有在dockerhub上托管,而是在elastic自己的仓库。
elasticsearch | Docker @ Elastic
从官方提供的地址下载,可以较快的把镜像下来。并且供选择的版本也很全面。
配置docker 映射目录及docker脚本
- 使用docker启动elasticsearch 需要 创建映射的目录(方便后期修改配置文件,安装插件等等)。这里我创建了三个目录,分别为
/data/elasticsearch/config --用于保存配置文件
/data/elasticsearch/data --用于保存数据
/data/elasticsearch/plugins --用于保存es的插件(如中文分词插件等)
-
在创建完目录后,需要在config文件夹中添加配置文件elasticsearch.yml(这个配置文件仅限测试使用,因为没有添加密码相关的验证)
http.cors.enabled: true http.cors.allow-origin: "*" http.host: 0.0.0.0 xpack.security.enabled: false
-
docker启动命令
在进行到这一步的时候,基本上就没有什么坑了,可以通过常规的docker run进行启动了。
docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms84m -Xmx512m" -v /dockerdata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /dockerdata/elasticsearch/data:/usr/share/elasticsearch/data -v /dockerdata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d docker.elastic.co/elasticsearch/elasticsearch:8.8.1-amd64
这里需要注意的是,目录的映射以及elasticsearch镜像的名称。
然后可以通过docker logs -f 容器id查看启动的情况了。
-
启动测试
通过浏览器访问127.0.0.1:9200,能够看到es的配置文件,则表示elasticsearch启动成功。
安装Kibana
Kibana的安装较为简单,需要主要的是,kibana的版本需要和elasticsearch的版本保持一致,es的版本我选择的是8.8.1,依然通过elastic官网提供的docker镜像进行下载即可。
-
启动命令
kibana的安装过程没有完全按照官网的教程,对一些过程进行了化简。
-
首先通过 docker inspect es 命令,查看es的详细信息,这里主要是为了看到es的ip。
"Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "58f9093734c66242089d49d7dc60ddbb427a8df9eb92ebb13c871c6073bd17f6", "EndpointID": "c7a5ea6c0d42ee538c571ac3506c56530f08e8bf884605295515e1c4bbbded42", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03", "DriverOpts": null } } } }
其中,IPAddress对应的值,就是es的ip,后续在kibana的启动命令中需要用到。
-
启动脚本
docker run --name kibana -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200 -d kibana:8.8.1
这里 hosts的地址,就是刚才的IPAddress对应的es地址。一开始想着在同一个机器上进行安装,可以通过127.0.0.1:9200进行连接,发现无法连接到es,导致kibana最终启动失败。
-