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

1. 环境准备
在开始安装之前,确保你的系统上已经安装了 Docker 和 Docker Compose。以下是安装步骤:
安装 Docker 和 Docker Compose
- Docker :Docker 安装指南
- Docker Compose :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问题,否则报错如下)

```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 的应用程序。