以下是 Docker 安装 Elasticsearch 的详细步骤及配置建议:
1. 拉取 Elasticsearch 镜像
docker pull elasticsearch:7.17.0 # 以 7.17.0 版本为例(版本号可替换)
提示:推荐使用官方镜像
docker.elastic.co/elasticsearch/elasticsearch
或 Docker Hub 的elasticsearch
镜像。
2. 创建挂载目录并配置权限
mkdir -p /usr/local/es/{data,config,plugins}
chmod -R 777 /usr/local/es # 确保容器有读写权限
echo "http.host: 0.0.0.0" > /usr/local/es/config/elasticsearch.yml # 允许所有 IP 访问
注意:目录权限不足可能导致启动失败。
3. 启动 Elasticsearch 容器
docker run -d \
--name es \
--restart=always \
-p 9200:9200 -p 9300:9300 \ # 映射 HTTP 和集群通信端口
-e "discovery.type=single-node" \ # 单节点模式
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ # JVM 最小/最大内存(需≥512MB)
-v /usr/local/es/data:/usr/share/elasticsearch/data \ # 数据持久化
-v /usr/local/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \ # 插件目录
--privileged \
elasticsearch:7.17.0
关键参数说明:
discovery.type=single-node
:单节点部署必填;ES_JAVA_OPTS
:内存不足会导致启动失败(默认 1GB,可调低但需≥512MB);privileged
:赋予容器访问设备权限。
4. 验证安装是否成功
访问 http://localhost:9200
(宿主机 IP),若返回 JSON 格式的节点信息(含 "tagline":"You Know, for Search"
),则安装成功。
常见问题处理
- 启动失败:检查日志
docker logs es
,常见问题包括目录权限不足或内存过小。 - 跨域配置:在
elasticsearch.yml
中添加:http.cors.enabled: true http.cors.allow-origin: "*"