docker安装ElasticSearch&Kibana

本文参考以下两篇文章

✅ElasticSearch&Kibana 部署 · 云效 Thoughts · 企业级知识库 (aliyun.com)

docker安装ElasticSearch&Kibana - 飞书

安装elasticsearch

使用docker下载es:

bash 复制代码
docker pull elasticsearch:8.13.0

挂载配置

创建挂在文件目录

bash 复制代码
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 文件

bash 复制代码
cluster.name: "nfturbo-cluster"
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true

启动镜像

bash 复制代码
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 命令。这种方式适合于交互式设置密码,并可以根据你的需要手动输入每个用户的密码。

bash 复制代码
# 进入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容器,新加用户,并且设置角色权限,根据提示创建密码,再次确认密码

bash 复制代码
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

bash 复制代码
docker pull kibana:8.13.0

查看es的ip

bash 复制代码
docker inspect elasticsearch|grep IPAddress

挂载配置

bash 复制代码
#创建挂载文件
touch /home/docker/es/config/kibana.yml
#权限
chmod 777 /home/docker/es/config/kibana.yml

编辑kibana.yml,需要把刚刚查到的es的ip设置到++elasticsearch.hosts++中,其他的配置自己适当调整即可

bash 复制代码
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

bash 复制代码
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))即可访问

复制代码
bash 复制代码
#kibana容器运行日志
docker logs kibana
相关推荐
童槿顏丶12 小时前
docker自动化部署脚本
docker·eureka·自动化
Elasticsearch14 小时前
Elasticsearch:使用 AI Agent 来创建 workflows
elasticsearch
gll77316 小时前
RAG 检索层实战:Redis 缓存 + ES 混合检索 + BGE-Rerank 重排全链路落地与踩坑
elasticsearch
GlueNa2SiO316 小时前
06-Docker存储与数据持久化
笔记·学习·docker
一位正在转型AI全栈的前端工程师17 小时前
前端转全栈:从 502 到 200,我的第一个 Docker+Nginx+Node.js 项目
docker·容器
Elasticsearch17 小时前
ES 存日志很贵?我用 ES 9.5 把日志从 4.5G 压到 412M 压缩比11.2倍,日志硬扫每秒128万行!
elasticsearch
jason_renyu18 小时前
Linux Docker 服务管理与排查实战指南(新手速查版)
linux·docker·新手docker学习·docker日志查询·docker服务管理
童槿顏丶18 小时前
Jenkins部署(Docker)
java·docker·jenkins
维核科技18 小时前
大模型私有化部署:Docker与Kubernetes实战避坑
docker·容器·kubernetes