使用 Docker 部署 Elasticsearch:详细步骤与原创指南
Elasticsearch 是一个强大的分布式搜索引擎,而 Docker 则是一种轻量级的容器化技术。将 Elasticsearch 部署在 Docker 容器中,可以简化部署流程,提高环境一致性,并方便地进行版本管理和扩展。
一、环境准备
- Docker 版本: 18.06 或更高版本
- Docker Compose 版本: 1.22.0 或更高版本 (可选)
二、部署步骤
1. 拉取 Elasticsearch 镜像
使用以下命令从 Docker Hub 拉取 Elasticsearch 官方镜像:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0
2. 运行 Elasticsearch 容器
使用以下命令运行 Elasticsearch 容器:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.0
参数说明:
-d
: 后台运行容器--name elasticsearch
: 指定容器名称为elasticsearch
-p 9200:9200
: 将容器内的 9200 端口映射到宿主机的 9200 端口,用于 HTTP 通信-p 9300:9300
: 将容器内的 9300 端口映射到宿主机的 9300 端口,用于节点间通信-e "discovery.type=single-node"
: 设置 Elasticsearch 为单节点模式
3. 验证部署
打开浏览器,访问 http://localhost:9200
,如果看到类似以下的 JSON 信息,说明 Elasticsearch 部署成功:
{"name" : "node-1","cluster_name" : "docker-cluster","cluster_uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","version" : {"number" : "7.10.0","build_flavor" : "default","build_type" : "docker","build_hash" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","build_date" : "2020-11-05T10:36:47.660Z","build_snapshot" : false,"lucene_version" : "8.7.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}
三、使用 Docker Compose 部署 (可选)
为了更方便地管理 Elasticsearch 容器,可以使用 Docker Compose 进行部署。
1. 创建 docker-compose.yml
文件
version: '3.7'services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0container_name: elasticsearchenvironment:- discovery.type=single-nodeports:- 9200:9200- 9300:9300volumes:- esdata:/usr/share/elasticsearch/datavolumes:esdata:
2. 启动 Elasticsearch 容器
在 docker-compose.yml
文件所在目录下,执行以下命令启动 Elasticsearch 容器:
docker-compose up -d
四、数据持久化
为了防止容器重启后数据丢失,可以将 Elasticsearch 的数据目录挂载到宿主机的目录中。
1. 创建数据目录
在宿主机上创建一个目录用于存储 Elasticsearch 数据,例如 /data/elasticsearch
。
2. 挂载数据目录
在运行容器时,使用 -v
参数将宿主机的数据目录挂载到容器内的 /usr/share/elasticsearch/data
目录:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /data/elasticsearch:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:7.10.0