本文以7.4.2版本为例
1.下载镜像
1.1下载es
docker pull elasticsearch:7.4.2
1.2下载可视化操作界面
docker pull kibana:7.4.2
2.创建实例
2.1准备工作
将http.host:0.0.0.0写入配置文件表示elasticsearch可以被远程的任何机器所访问
mkdir -p /docker_data/elasticsearch/config
mkdir -p /docker_data/elasticsearch/data
echo "http.host: 0.0.0.0">>/docker_data/elasticsearch/config/elasticsearch.yml
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /docker_data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker_data/elasticsearch/data:/usr/share/elasticsearch/data -v /docker_data/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
参数解释:
1. -p 9200:9200 -p 9300:9300:为暴露两个端口。9200是发送http请求时向es发起请求的端口,9300是es在分布式集群状态下节点间的通信端口
2. -e "discovery.type=single-node" :指定es以单节点运行
3. -e ES_JAVA_OPTS="-Xms64m -Xmx128m":此参数很重要,如果不指定该参数,es启动会将虚拟机内存全部占用
问题
因为数据是挂在到虚拟机目录下由于用户权限原因不能访问目录
将/docker_data/elasticsearch目录下的目录更改权限为所有用户组都读写以及执行权限
测试访问可成功
2.2安装Kibana
docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.254.128:9200 -p 5601:5601 -d kibana:7.4.2
问题
本以为是kibana启动需要时间,但是过了一分多钟也未启动
查看日志为下:
容器启动的时候, es主机的没有设置正确
解决方法:
进入容器
docker exec -it kibana /bin/bash
修改config/kibana.yml文件
重启kibana
上述操作还是不行,在kibana容器中使用 curl 192.168.254.128:9200发现不能访问
于是想使用elasticsearch容器本身的ip
docker inspect elasticsearch
在kibana.yml文件把ip改成这个后,重启了elasticsearch与kibana后成功