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

在现代开发中,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"

```

  • **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

```

3.2 使用 `elasticsearch-reset-password` 工具

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

```bash

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

相关推荐
-曾牛7 分钟前
Git Flow
大数据·git·学习·elasticsearch·个人开发
GalaxyPokemon28 分钟前
Muduo网络库实现 [十六] - HttpServer模块
linux·运维·服务器·网络
461K.32 分钟前
spark与hadoop的区别
大数据·运维·hadoop·分布式·spark·intellij-idea
Zfox_36 分钟前
Git 进阶之路:高效协作之分支管理
大数据·linux·运维·c++·git·elasticsearch
lilye6642 分钟前
精益数据分析(11/126):辨别虚荣指标,挖掘数据真价值
大数据·人工智能·数据分析
夏天里的肥宅水1 小时前
解决方案:远程shell连不上Ubuntu服务器
linux·运维·服务器·ubuntu
牛角上的男孩1 小时前
使用QEMU(8.2.10)调试ARM64 Linux内核6.6.30
linux·运维·服务器
别致的影分身1 小时前
Docker Image(镜像)
运维·docker·容器
白鲸开源1 小时前
万字长文 | Apache SeaTunnel 分离集群模式部署 K8s 集群实践
大数据
爱莉希雅&&&2 小时前
Linux论坛安装
linux·运维·服务器