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,请参考官方文档。

为了使用 `docker-compose` 安装 **Elasticsearch 8.x** **Kibana 8.x**,并配置密码,可以通过环境变量配置文件来实现。以下是完整的 `docker-compose.yml` 配置以及必要的配置说明。 ### 配置步骤 #### 1. 创建目录结构 在项目根目录下创建以下文件夹结构: ``` es-kibana/ ├── docker-compose.yml ├── es/ │ ├── config/ │ │ └── elasticsearch.yml │ └── data/ └── kibana/ └── config/ └── kibana.yml ``` #### 2. 编写 `docker-compose.yml` 文件 ```yaml version: '3.8' services: elasticsearch: container_name: es01 image: docker.elastic.co/elasticsearch/elasticsearch:8.10.4 environment: - discovery.type=single-node - ELASTIC_PASSWORD=your_secure_password - TZ=Asia/Shanghai - ES_JAVA_OPTS=-Xms1g -Xmx1g ports: - "9200:9200" - "9300:9300" volumes: - ./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./es/data:/usr/share/elasticsearch/data - ./es/plugins:/usr/share/elasticsearch/plugins networks: - elastic_net kibana: container_name: kibana01 image: docker.elastic.co/kibana/kibana:8.10.4 environment: - "TZ=Asia/Shanghai" - "I18N_LOCALE=zh-CN" - "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" - "ELASTICSEARCH_USERNAME=elastic" - "ELASTICSEARCH_PASSWORD=your_secure_password" ports: - "5601:5601" volumes: - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml networks: - elastic_net depends_on: - elasticsearch networks: elastic_net: driver: bridge ``` #### 3. 配置 Elasticsearch 安全设置 在 `es/config/elasticsearch.yml` 文件中添加以下内容以启用安全功能并允许远程访问: ```yaml http.host: 0.0.0.0 http.cors.enabled: true http.cors.allow-origin: "*" xpack.security.enabled: true xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true ``` #### 4. 配置 Kibana 设置 在 `kibana/config/kibana.yml` 文件中添加以下内容以启用中文界面并连接到 Elasticsearch: ```yaml server.name: kibana server.host: "0" elasticsearch.hosts: ["http://elasticsearch:9200"] elasticsearch.username: elastic elasticsearch.password: your_secure_password i18n.locale: "zh-CN" ``` #### 5. 启动服务 在 `docker-compose.yml` 所在目录下运行以下命令启动服务: ```bash docker-compose up -d ``` 服务启动后,可以通过访问 `http://localhost:5601` 进入 Kibana 界面,并使用用户名 `elastic` 设置的密码 `your_secure_password` 登录。 #### 6. 可选:手动设置密码 如果需要手动设置密码,可以进入 Elasticsearch 容器并执行以下命令: ```bash docker exec -it es01 /bin/bash bin/elasticsearch-setup-passwords interactive ``` 这将引导你设置 `elastic` 用户其他内置用户的密码。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上善若水-学者至上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值