Docker Compose 安装Elasticsearch8和kibana和mysql8和redis5 并重置密码的经验与总结

Docker Compose 安装 Elasticsearch 并重置密码的总结

在现代开发中,Elasticsearch 是一个非常受欢迎的分布式搜索引擎,广泛应用于日志收集、数据分析和实时搜索等场景。由于 Elasticsearch 提供强大的查询和分析功能,它成为了许多企业架构的核心部分。通过 Docker 和 Docker Compose 安装 Elasticsearch 可以大大简化部署和管理流程。本文将介绍如何使用 Docker Compose 安装 Elasticsearch,并重置本地用户的密码。

1. 环境准备

在开始安装之前,确保你的系统上已经安装了 Docker 和 Docker Compose。以下是安装步骤:

安装 Docker 和 Docker Compose

如果已经安装了 Docker 和 Docker Compose,可以跳过这一步。

2. 使用 Docker Compose 安装 Elasticsearch

2.1 创建 docker-compose.yml 配置文件

为了简化 Elasticsearch 服务的管理,我们可以使用 Docker Compose 来定义和启动服务。创建一个 docker-compose.yml 文件,其中定义了 Elasticsearch 服务。

yaml 复制代码

networks: minutel_docker_net: driver: bridge

services: elasticsearch: container_name: elasticsearch # 容器名为'elasticsearch' image: elasticsearch:8.13.4 # elasticsearch:7.17.1 restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器 volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录 - "./data/elasticsearch/config:/usr/share/elasticsearch/config" - "./data/elasticsearch/data:/usr/share/elasticsearch/data" - "./data/elasticsearch/logs:/usr/share/elasticsearch/logs" - "./data/elasticsearch/plugins:/usr/share/elasticsearch/plugins" environment: # 设置环境变量,相当于docker run命令中的-e - "TZ=Asia/Shanghai" - "LANG=en_US.UTF-8" - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" ports: - "9200:9200" - "9300:9300" networks: - minutel_docker_net

kibana: container_name: kibana image: kibana:8.13.4 # kibana:7.17.1 restart: unless-stopped volumes: - "./data/kibana/config/:/usr/share/kibana/config/" ports: - "5601:5601" depends_on: - elasticsearch links: - elasticsearch networks: - minutel_docker_net

mysql: image: mysql:8.0 container_name: mysql8 environment: MYSQL_ROOT_PASSWORD: 132134 volumes: - "./data/mysql/data:/var/lib/mysql" - "./data/mysql/log:/var/log/mysql" networks: - minutel_docker_net ports: - "3306:3306" redis: image: redis:5.0 container_name: redis5 networks: - minutel_docker_net ports: - "6379:6379"

perl 复制代码
- **image**:指定使用的 Elasticsearch 镜像版本,这里使用的是 `8.6.0`。
- **container_name**:容器的名称,这里指定为 `elasticsearch`。
- **environment**:环境变量设置:
  - `discovery.type=single-node`:表示启用单节点模式,不需要集群。
  - `ELASTIC_PASSWORD=changeme`:设置 Elasticsearch 默认超级用户 `elastic` 的密码为 `changeme`。
- **ports**:将容器的 9200 端口和 9300 端口分别映射到宿主机的 9200 和 9300 端口,这样我们就能通过 `localhost:9200` 访问 Elasticsearch 服务。
- **volumes**:使用 Docker 卷来持久化 Elasticsearch 数据,防止容器停止后数据丢失。
- **networks**:指定使用 `bridge` 网络驱动,确保容器与宿主机之间的网络通信。

### 2.2 启动 Elasticsearch 服务

创建好 `docker-compose.yml` 文件后,使用以下命令启动 Elasticsearch 服务:
(注意,由于dcoker的使用需要开启vpn,自行处理vpn问题,否则报错如下)

![image.png](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/45bf8a49885944cc82eec7817f31f5ef~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgMzYwX2dvX3BocA==:q75.awebp?rk3s=f64ab15b&x-expires=1745560177&x-signature=r5JWGPDvuosJ3iGsIm%2BTmc3mWKA%3D)

```bash
docker-compose up -d

这条命令会启动所有定义在 docker-compose.yml 文件中的服务,并在后台运行。稍等片刻,Elasticsearch 服务就会启动起来。

2.3 检查服务是否启动成功

启动完毕后,我们可以通过访问 http://localhost:9200 来确认 Elasticsearch 服务是否正常运行。你可以使用以下命令:

bash 复制代码
curl -u elastic:changeme http://localhost:9200

如果一切正常,你将看到类似如下的响应:

json 复制代码
{
  "name" : "elasticsearch",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "abc123",
  "version" : {
    "number" : "8.6.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "abc123",
    "build_date" : "2025-04-18T12:00:00.000Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "8.6.0",
    "minimum_index_compatibility_version" : "8.6.0"
  },
  "tagline" : "You Know, for Search"
}

3. 重置 Elasticsearch 用户密码

3.1 进入 Elasticsearch 容器

Elasticsearch 提供了一个 elasticsearch-reset-password 工具来帮助用户重置密码。为了执行这个工具,首先需要进入容器内部。

bash 复制代码
docker exec -it elasticsearch /bin/bash
 或者
docker logs <container_name_or_id> | grep "Password for the elastic user"

3.2 使用 elasticsearch-reset-password 工具

进入容器后,使用以下命令来重置默认的 elastic 用户密码:

bash 复制代码
bin/elasticsearch-reset-password -u elastic
或者
docker exec -it <container_name> /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

此命令会提示你是否确认重置密码,输入 y 确认后,系统会自动生成一个新的密码并显示在控制台中。记住这个密码,因为后续连接 Elasticsearch 时需要用到。

3.3 退出容器并测试新密码

重置密码后,可以退出容器:

bash 复制代码
exit

然后,使用新的密码通过以下命令访问 Elasticsearch 服务:

bash 复制代码
curl -u elastic:<new-password> http://localhost:9200

<new-password> 替换为重置后显示的密码。如果成功连接,您将看到类似之前的响应信息。

4. 总结

通过 Docker Compose 安装 Elasticsearch 并重置密码的过程非常简便。利用 Docker Compose,您可以轻松管理 Elasticsearch 服务,快速启动和停用服务,并通过配置文件灵活地定制容器环境。

在安装和配置过程中,我们通过创建 docker-compose.yml 文件来定义服务的配置,简化了部署步骤。通过容器内部的 elasticsearch-reset-password 工具,我们能够方便地重置用户密码,确保安全性。

使用 Docker 和 Docker Compose 安装 Elasticsearch 不仅提高了开发效率,还能让我们在本地环境中轻松测试和开发基于 Elasticsearch 的应用程序。

相关推荐
gxn_mmf29 分钟前
典籍知识问答模块AI问答功能feedbackBug修改+添加对话名称修改功能
前端·后端·bug
向哆哆1 小时前
Spring Boot快速开发:从零开始搭建一个企业级应用
java·spring boot·后端
what_20182 小时前
集群/微服务/分布式
运维·微服务·架构
shinelord明2 小时前
【计算机主板架构】ATX架构
架构·计算机外设·硬件架构·硬件工程
pccai-vip2 小时前
系分论文《论多云架构治理的分析和应用》
架构·软考论文
[email protected]3 小时前
ASP.NET Core 中实现 Markdown 渲染中间件
后端·中间件·asp.net·.netcore
eternal__day8 小时前
Spring Boot 实现验证码生成与校验:从零开始构建安全登录系统
java·spring boot·后端·安全·java-ee·学习方法
海天胜景9 小时前
HTTP Error 500.31 - Failed to load ASP.NET Core runtime
后端·asp.net
海天胜景9 小时前
Asp.Net Core IIS发布后PUT、DELETE请求错误405
数据库·后端·asp.net
独行soc10 小时前
2025年渗透测试面试题总结-某服面试经验分享(附回答)(题目+回答)
linux·运维·服务器·网络安全·面试·职场和发展·渗透测试