准备环境

如果 docker 容器没有 vi 命令,可以自行安装:

docker exec -it --user="root" es /bin/bash
apt update
apt install

因为需要部署 kibana 容器,让 es和 kibana 容器互联,所以需要创建网络。

docker network create es-net

以安装 Elasticsearch 8.11.4 版本为例:

docker pull elasticsearch:8.114

接下来创建挂载点目录:

mkdir -p ~/apps/es/data ~/apps/es/config ~/apps/es/plugins

chmod 777 ~/apps/es/data
chmod 777 ~/apps/es/config
chmod 777 ~/apps/es/plugins

部署单点es,创建es容器

执行以下命令:

docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v ~/apps/es/data:/usr/share/elasticsearch/data \
-v ~/apps/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.11.4

然后需要编写 elasticsearch.yml 更改相关配置。进入 es 容器跳转到 config 目录下关闭密码安全验证

docker exec -it es /bin/bash
cd config
echo 'xpack.security.enabled: false' >> elasticsearch.yml

注意:es 8.0 以上默认开启了 ssl 认证

直接访问 http://127.0.0.1:9200 是无法访问的,需要通过 https 访问或者关闭 SSL认证。

自 Elasticsearch 7.8.0 版本开始,Elasticsearch 不再提供默认的用户名和密码。相反,它采用了内置安全特性,并引入了超级用户(superuser)角色和内置用户(built-in users)概念来管理访问控制。

在新安装的情况下,您需要设置一个初始的内置用户以及相关的登录凭据。以下是一个示例:

docker exec -it es /bin/bash

执行创建用户命令:

bin/elasticsearch-users useradd Demo

角色授权:

bin/elasticsearch-users roles -a superuser Demo
bin/elasticsearch-users roles -a kibana_system Demo

Kibana登录的时候就使用 Demo 的账号和密码进行登录就可以了

这里我们可以直接关闭安全验证。进入容器:

docker exec -it es /bin/bash

找到配置文件路径 打开 elasticsearch.yml 文件 找到 xpack.security.enabled: true 改为 xpack.security.enabled: false 这样就可以直接使用 http 访问,并且不需要账号密码鉴权。这个设置看个人情况,如果是生产环境建议开始开启 https和账号密码鉴权。

最后重启容器:

docker restart es

再访问 http://127.0.0.1:9200 即可

搭建 Kibana

首先拉取镜像:

docker pull kibana:8.11.4

然后创建挂载目录:

mkdir -p ~/apps/kibana/config ~/apps/kibana/data

部署 kibana,创建 kibana 容器:

docker run -d \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.11.4

接下来测试Kibana是否安装成功。访问容器 IP 地址 + 端口号,前面配置 Kibana 的端口号是 5601。

http://localhost:5601