本文参考以下两篇文章
✅ElasticSearch&Kibana 部署 · 云效 Thoughts · 企业级知识库 (aliyun.com)
docker安装ElasticSearch&Kibana - 飞书
安装elasticsearch
使用docker下载es:
docker pull elasticsearch:8.13.0
挂载配置
创建挂在文件目录
mkdir -p /home/docker/es/config mkdir -p /home/docker/es/data mkdir -p /home/docker/es/plugins mkdir -p /home/docker/es/logs #权限 chmod 777 /home/docker/es/config chmod 777 /home/docker/es/data chmod 777 /home/docker/es/plugins chmod 777 /home/docker/es/logs
编辑 /home/docker/es/config/elasticsearch.yml 文件
cluster.name: "nfturbo-cluster" network.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: true
启动镜像
docker run --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx512m" \ -v /home/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/docker/es/data:/usr/share/elasticsearch/data \ -v /home/docker/es/plugins:/usr/share/elasticsearch/plugins \ -v /home/docker/es/logs:/usr/share/elasticsearch/logs \ -d elasticsearch:8.13.0
设置内置用户密码
对于在 Docker 环境中设置 Elasticsearch 内置用户密码,建议使用
elasticsearch-setup-passwords auto
命令,因为它会自动为内置用户生成随机密码,并直接显示在控制台上。这种方式更适合自动化部署或脚本化操作。如果你希望手动输入密码并交互式地设置密码,可以使用
elasticsearch-setup-passwords interactive
命令。这种方式适合于交互式设置密码,并可以根据你的需要手动输入每个用户的密码。
# 进入es容器内部 docker exec -it a46f2f8bdfd7 /bin/bash #手动设置用户密码 elasticsearch-setup-passwords interactive #重启es容器
然而这个并不行,后面你的kibana启动后会遇到这样一个问题,原因是最新版本的 Elasticsearch 引入了更加严格的安全策略,特别是涉及到 Kibana 需要访问的系统索引。具体来说,错误信息指出使用的是 elastic
超级用户账户,但是这个账户不允许写入 Kibana 所需的系统索引。
Error: [config validation of [elasticsearch].username]: value of "elastic" is forbidden
进入es容器,新加用户,并且设置角色权限,根据提示创建密码,再次确认密码
bin/elasticsearch-users useradd gxj #密码123456 bin/elasticsearch-users roles -a superuser gxj bin/elasticsearch-users roles -a kibana_system gxj
警告不要紧,不用管
WARNING: Owner of file [/usr/share/elasticsearch/config/users_roles] used to be [root], but now is [elasticsearch]
浏览器访问
ip:9200, 记得防火墙开放映射端口
安装Kibana
使用docker下载kibana
docker pull kibana:8.13.0
查看es的ip
docker inspect elasticsearch|grep IPAddress
挂载配置
#创建挂载文件 touch /home/docker/es/config/kibana.yml #权限 chmod 777 /home/docker/es/config/kibana.yml
编辑kibana.yml,需要把刚刚查到的es的ip设置到elasticsearch.hosts中,其他的配置自己适当调整即可
server.name: kibana #server.port: 5601 server.host: 0.0.0.0 #改成 es 的内网 ip elasticsearch.hosts: [ "http://172.17.0.2:9200" ] elasticsearch.username: "gxj" elasticsearch.password: "123456" xpack.monitoring.ui.container.elasticsearch.enabled: true i18n.locale: "zh-CN"
启动Kibana
docker run --name kibana \ -p 5601:5601 \ -v /home/docker/es/config/kibana.yml:/usr/share/kibana/config/kibana.yml \ -d kibana:8.13.0
浏览器访问
http://ip:5601, 记得防火墙开放映射端口
输入用户名(gxj)、密码(123456))即可访问
#kibana容器运行日志 docker logs kibana