使用 Docker 部署 Elasticsearch:详细步骤与原创指南
使用 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.0
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
volumes:
- esdata:/usr/share/elasticsearch/data
volumes:
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