docker在自定义网络中安装ElasticSearch和Kibana

创建自定义网络

创建一个名为 es-net 的桥接网络。这将作为 Elasticsearch 和 Kibana 的私有通信通道。

bash 复制代码
# 创建网络
docker network create es-net
# 查看网络是否创建成功
docker network ls

启动 Elasticsearch 容器

安装命令

bash 复制代码
docker run -d \
  --name elasticsearch \
  --network es-net \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  -v es_data:/usr/share/elasticsearch/data \
  docker.elastic.co/elasticsearch/elasticsearch:8.11.0

参数解释

  1. -d:在后台运行容器(守护进程模式)。
  2. --name elasticsearch:为容器指定一个名称,后续 Kibana 将通过这个名称 elasticsearch 来访问它。
  3. --network es-net:将容器连接到刚创建的自定义网络。
  4. -p 9200:9200:将容器的 9200 端口(HTTP API 端口)映射到宿主机的 9200 端口,以便从宿主机访问。
  5. -p 9300:9300:将容器的 9300 端口(节点间通信端口)映射出来,通常其他 Elasticsearch 节点会通过这个端口通信,单节点模式下非必须,但建议保留。
  6. -e "discovery.type=single-node":设置 Elasticsearch 为单节点模式,简化配置。
  7. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":为 Elasticsearch 分配 512MB 的堆内存。
  8. -v es_data:/usr/share/elasticsearch/data:将数据目录挂载到名为 es_data 的 Docker 卷中,防止容器删除后数据丢失。
  9. docker.elastic.co/...:8.11.0:指定使用的镜像和版本。

安装验证

通过网页访问9200端口,提示要输入用户和密码。

但是在安装时没有为ES设置用户名和密码,查找资料发现ES会有个默认超级用户elastic,但是需要我们手动为这个用户设置密码。

ES设置密码

  1. 进入容器
    使用 docker exec 命令以交互模式(-it)进入正在运行的容器。
bash 复制代码
docker exec -it elasticsearch /bin/bash
  1. 在容器内执行密码设置命令
    Elasticsearch 提供了内置的 elasticsearch-setup-passwords 工具来批量设置所有内置用户的密码。
    重要提示: 此命令会为所有内置用户(如 elastic, kibana_system, apm_system 等)设置新密码。如果你不是首次设置,它将重置所有密码(ps:elastic)。
bash 复制代码
# 使用 interactive (交互) 模式
elasticsearch-setup-passwords interactive

再次安装验证

输入用户及密码后,验证成功

启动Kibana容器

启动命令

bash 复制代码
docker run -d \
  --name kibana \
  --network es-net \
  -p 5601:5601 \
  -v /usr/share/elasticsearch/config/certs/http_ca.crt:/usr/share/elasticsearch/config/certs/http_ca.crt:ro \
  -e "ELASTICSEARCH_HOSTS=https://elasticsearch:9200" \
  -e "ELASTICSEARCH_USERNAME=kibana_system" \
  -e "ELASTICSEARCH_PASSWORD=***" \
  -e "ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=/usr/share/elasticsearch/config/certs/http_ca.crt" \
  -e "ELASTICSEARCH_SSL_VERIFICATIONMODE=certificate" \
  docker.elastic.co/kibana/kibana:8.11.0

参数解释

  1. --name kibana:为容器指定名称。
  2. --network es-net:让 Kibana 容器加入到与 Elasticsearch 同一个自定义网络中。
  3. -p 5601:5601:将容器的 5601 端口映射到宿主机的 5601 端口。
  4. -v /usr/share/elasticsearch/config/certs/http_ca.crt:/usr/share/elasticsearch/config/certs/http_ca.crt:ro:将ES生成的认证证书挂载到容器内,kibana容器启动时会访问
  5. -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200":关键! 这里设置了 Elasticsearch 的 URL。注意,主机名用的就是 Elasticsearch 容器的名称 elasticsearch。这是因为在自定义网络 elastic-net 中,Docker 内置的 DNS 服务会自动将容器名称解析为其内部 IP 地址。
  6. -e "ELASTICSEARCH_USERNAME=kibana_system":8.x版本的es默认开启了安全认证,使用kibana_system用户连接
  7. -e "ELASTICSEARCH_PASSWORD=***":8.x版本的es需要连接密码,在此使用kibana_system用户访问es的密码。
  8. -e "ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=/usr/share/elasticsearch/config/certs/http_ca.crt": 告诉 Kibana CA 证书的路径
  9. -e "ELASTICSEARCH_SSL_VERIFICATIONMODE=certificate":启动时验证证书
  10. docker.elastic.co/...:8.11.0:Kibana 的版本必须与 Elasticsearch 的版本一致。

安装验证

访问ES端口,因为开启了安全认证,输入ES超级用户elastic的用户名及密码即可登录。

安装IK分词器

下载IK分词器

ik分词器下载地址

下载版本和ES版本保持一致:8.11.0

安装

  1. 直接通过数据卷共享将zip文件同步到容器中的挂载点目录下
  2. 安装
bash 复制代码
bin/elasticsearch-plugin install file:///usr/share/elasticsearch/data/elasticsearch-analysis-ik-8.11.0.zip

验证

相关推荐
vx_Biye_Design43 分钟前
springboot宠物寄养服务预约与监管系统82684-计算机课程设计、毕业设计
java·vue.js·spring boot·elasticsearch·课程设计·express·宠物
熊文豪1 小时前
KingbaseES 数据加密全解:从 SSL 到全密态
网络·网络协议·ssl
91刘仁德1 小时前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp
小此方2 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
Elastic 中国社区官方博客2 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
迪康coolmu2 小时前
屏幕水印与防拍照落地:从水印类型到泄密溯源的完整配置
运维·网络·安全·网络安全·数据安全
AIgorithmGEEK2 小时前
[Linux]HTTP 应用层协议全解(下篇)
linux·网络·网络协议·http·cookie·无连接·无状态
名誉寒冰2 小时前
我是怎么理解 eBPF、AppArmor 和 Seccomp 的?
linux·网络·内核
小白的码BUG之路3 小时前
Docker -- No space left on device
运维·docker·容器
‎ദ്ദിᵔ.˛.ᵔ₎3 小时前
linux 进程间通信
linux·网络