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

验证

相关推荐
沧澜sincerely7 小时前
互联网的路由选择协议
网络·tcp/ip·智能路由器
qq_5470261797 小时前
微服务 - 网关统一鉴权
运维·网络·微服务
Empty_7777 小时前
Elasticsearch+Logstash+Filebeat+Kibana部署
大数据·elasticsearch·搜索引擎
拾忆,想起8 小时前
TCP粘包拆包全解析:数据流中的“藕断丝连”与“一刀两断”
java·网络·数据库·网络协议·tcp/ip·哈希算法
一只大耗子。8 小时前
Mac M系列芯片制作Oracle19镜像使用docker-compose运行
docker·docker-compose·mac·oracle19c
梁正雄8 小时前
18、docker-macvlan-2-示例
运维·docker·容器·macvlan
梁正雄8 小时前
17、docker-macvlan-1-理论
运维·docker·macvlan·docker macvlan
网安小白的进阶之路9 小时前
A模块 系统与网络安全 第四门课 弹性交换网络-4
网络·web安全·php
七夜zippoe9 小时前
高性能网络编程实战:用Tokio构建自定义协议服务器
linux·服务器·网络·rust·tokio
wsx_iot9 小时前
TCP/IP 五层协议栈
网络·网络协议·tcp/ip