docker安装ElasticSearch&Kibana

时间:2024-07-06 11:47:53

本文参考以下两篇文章

✅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