本文参考以下两篇文章
✅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