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

验证

相关推荐
sunfove2 小时前
光网络的立交桥:光开关 (Optical Switch) 原理与主流技术解析
网络
唯情于酒2 小时前
Docker学习
学习·docker·容器
喵叔哟2 小时前
20.部署与运维
运维·docker·容器·.net
Kevin Wang7274 小时前
欧拉系统服务部署注意事项
网络·windows
min1811234564 小时前
深度伪造内容的检测与溯源技术
大数据·网络·人工智能
汤愈韬5 小时前
Full Cone Nat
网络·网络协议·网络安全·security·huawei
zbtlink5 小时前
现在还需要带电池的路由器吗?是用来干嘛的?
网络·智能路由器
桌面运维家5 小时前
vDisk配置漂移怎么办?VOI/IDV架构故障快速修复
网络·架构
dalerkd5 小时前
忙里偷闲叙-谈谈最近两年
网络·安全·web安全
德育处主任6 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker