Docker 中安装和配置带用户名和密码保护的 Elasticsearch

在 Docker 中安装和配置带用户名和密码保护的 Elasticsearch 需要以下步骤。Elasticsearch 的安全功能(包括基本身份验证)在默认情况下是启用的,但在某些版本中可能需要手动配置。以下是详细步骤,包括如何设置用户名和密码。

1. 安装 Docker 和 Docker Compose

确保你的系统已经安装 Docker 和 Docker Compose。如果没有,请参考以下命令进行安装。

对于 Ubuntu:
复制代码
sudo apt-get update
sudo apt-get install -y docker.io docker-compose
对于 CentOS:
复制代码
sudo yum install -y docker docker-compose

启动 Docker 服务:

复制代码
sudo systemctl start docker
sudo systemctl enable docker

2. 下载 Elasticsearch 镜像

从 Docker Hub 拉取 Elasticsearch 镜像:

docker pull elasticsearch:8.8.2

复制代码
exit
docker stop elasticsearch-temp
docker rm elasticsearch-temp

3. 设置 Elasticsearch 用户名和密码

Elasticsearch 8.x 默认启用了安全功能,包括基本身份验证。你可以使用 elasticsearch-setup-passwords 工具来设置内置用户的密码。

3.1 使用 Docker 启动一个临时的 Elasticsearch 容器
复制代码
docker run -d --name elasticsearch-temp -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.8.2
3.2 设置内置用户的密码

等待几秒钟,直到 Elasticsearch 容器启动并准备好。然后,运行以下命令进入容器并设置密码:

docker exec -it elasticsearch-temp /bin/bash

在容器内,运行以下命令:

复制代码
elasticsearch-setup-passwords interactive

按照提示为内置用户(如 elastickibana_systemlogstash_system 等)设置密码。设置完成后,记下这些密码,因为你将在配置文件中需要使用它们。

退出并停止临时容器:

复制代码
exit
docker stop elasticsearch-temp
docker rm elasticsearch-temp

4. 创建数据目录

在宿主机上创建一个目录,用于存储 Elasticsearch 数据。例如,创建目录 /path/to/your/esdata

复制代码
mkdir -p /path/to/your/esdata
sudo chown -R 1000:1000 /path/to/your/esdata

5. 配置 Docker Compose

创建一个 docker-compose.yml 文件,配置 Elasticsearch 服务,并包含用户名和密码配置。

复制代码
version: '3'
services:
  elasticsearch:
    image: elasticsearch:8.8.2
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ELASTIC_PASSWORD=your_elastic_password  # 设置 elastic 用户的密码
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - /path/to/your/esdata:/usr/share/elasticsearch/data

确保将 your_elastic_password 替换为之前设置的 elastic 用户的密码。

6. 启动 Elasticsearch

docker-compose.yml 文件所在目录中运行以下命令启动 Elasticsearch 服务:

复制代码
docker-compose up -d

7. 验证 Elasticsearch 连接

使用以下命令验证 Elasticsearch 是否成功启动并配置了用户名和密码:

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

你应该会看到类似以下的 JSON 响应:

复制代码
{
  "name" : "your-node-name",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "some-uuid",
  "version" : {
    "number" : "8.8.2",
    ...
  },
  ...
}

总结

通过以上步骤,你可以在 Docker 中成功安装并配置带用户名和密码保护的 Elasticsearch。使用 Docker Compose 可以更方便地管理和启动服务,并确保数据的持久性。如果需要进一步配置或优化 Elasticsearch,请参考官方文档。

相关推荐
zx_741484811 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS1 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
wdfk_prog2 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞3 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
日常筹谋记3 小时前
自动化仓储安全防护工况评估:明治传感器AS-33C技术适配性分析
大数据·运维·创业创新·业界资讯
Shadow(⊙o⊙)4 小时前
Linux进阶知识1.0
linux·运维·服务器
闲云自留地5 小时前
告别命令恐惧症,openEuler 基础操作 + 文本 + 网络管理实战
linux·运维·云计算
其实防守也摸鱼6 小时前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
^Rocky7 小时前
IT 疑难杂症诊疗室:复杂技术问题解决实录
运维·bug
挖掘狂人7 小时前
当生产环境"变慢",我用这套 perf + strace 30 分钟定位瓶颈
linux·运维·性能优化