Elastic Stack(也被稱為 ELK Stack)是一個非常強大的工具套件,用于實時搜索、分析和可視化大量數據。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等組件。本文將展示如何使用 Docker 安裝 Elasticsearch 并重置本地用戶密碼。
### 1. 環境準備
在開始之前,請確保您的系統已經安裝了 Docker 和 Docker Compose。如果沒有安裝,請參考官方文檔進行安裝:
- [Docker 安裝指南](https://docs.docker.com/get-docker/)
- [Docker Compose 安裝指南](https://docs.docker.com/compose/install/)
### 2. 下載并運行 Elasticsearch Docker 鏡像
首先,我們可以使用 Docker 拉取官方的 ElasticSearch 鏡像并啟動容器。
```bash
# 拉取官方 ElasticSearch 鏡像
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.6.0
```
接著,我們可以創建一個 Docker 容器并運行 ElasticSearch 實例。
```bash
# 啟動一個 Elasticsearch 容器
docker run -d --name elasticsearch \
? -p 9200:9200 -p 9300:9300 \
? -e "discovery.type=single-node" \
? -e "ELASTIC_PASSWORD=changeme" \
? docker.elastic.co/elasticsearch/elasticsearch:8.6.0
```
- `-d`:讓容器在后臺運行。
- `--name elasticsearch`:為容器指定一個名稱。
- `-p 9200:9200`:將容器的 9200 端口映射到主機的 9200 端口,Elasticsearch 的默認 HTTP 服務端口。
- `-p 9300:9300`:將容器的 9300 端口映射到主機的 9300 端口,Elasticsearch 的節點間通訊端口。
- `-e "discovery.type=single-node"`:啟用單節點模式。
- `-e "ELASTIC_PASSWORD=changeme"`:設置初始的超級用戶 `elastic` 的密碼。
啟動完成后,您可以通過訪問 `http://localhost:9200` 來檢查 Elasticsearch 是否正常運行。
```bash
# 測試是否能夠連接到 Elasticsearch
curl -u elastic:changeme http://localhost:9200
```
### 3. 使用 Docker 配置和重置本地密碼
接下來,我們將介紹如何重置本地用戶(如 `elastic`)的密碼。在 Elasticsearch 中,安全功能是啟用的,所以如果您使用默認密碼 `changeme`,您可以按照以下步驟更改密碼。
#### 步驟 1:進入容器
首先,進入運行中的 Elasticsearch 容器。
```bash
docker exec -it elasticsearch /bin/bash
```
#### 步驟 2:使用 `elasticsearch-reset-password` 工具重置密碼
Elasticsearch 提供了一個 `elasticsearch-reset-password` 工具,可以用來重置用戶密碼。
```bash
# 重置 elastic 用戶的密碼
bin/elasticsearch-reset-password -u elastic
```
執行命令后,您會看到類似如下的提示:
```bash
This will reset the password of the elastic user to a random value.
Are you sure you want to continue? [y/N]y
```
輸入 `y` 繼續操作,密碼將會被重置,并顯示新的密碼。
#### 步驟 3:查看重置后的密碼
重置成功后,新的密碼會顯示在控制臺中。記住這個密碼,稍后用于訪問 Elasticsearch。
```bash
# 退出容器
exit
```
### 4. 使用新的密碼登錄 Elasticsearch
現在,您可以使用新密碼登錄到 Elasticsearch 實例。
```bash
curl -u elastic:<new-password> http://localhost:9200
```
將 `<new-password>` 替換為您剛剛獲得的密碼。如果一切正常,您應該會看到類似下面的響應:
```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"
}
```
### 5. 使用 Docker Compose 配置和啟動 Elasticsearch
如果你希望使用 Docker Compose 來管理 Elasticsearch 服務,可以創建一個 `docker-compose.yml` 文件來簡化管理。
#### 創建 `docker-compose.yml`
```yaml
version: '3'
services:
? elasticsearch:
? ? image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
? ? container_name: elasticsearch
? ? environment:
? ? ? - discovery.type=single-node
? ? ? - ELASTIC_PASSWORD=changeme
? ? ports:
? ? ? - "9200:9200"
? ? ? - "9300:9300"
? ? volumes:
? ? ? - esdata:/usr/share/elasticsearch/data
? ? networks:
? ? ? - elastic_network
volumes:
? esdata:
networks:
? elastic_network:
? ? driver: bridge
```
#### 啟動服務
```bash
docker-compose up -d
```
然后,您就可以按照之前的步驟重置密碼。
### 6. 總結
通過 Docker 安裝 Elasticsearch 和重置本地密碼非常簡單。利用 Docker 的便利性,我們可以快速啟動和配置 Elasticsearch。通過 Docker Compose 管理 Elastic Stack 服務,讓您的開發和測試環境更加簡潔高效。