您好,登录后才能下订单哦!
# Docker怎么安装Elasticsearch(ES)
## 一、前言
Elasticsearch(简称ES)是一个基于Lucene构建的开源分布式搜索引擎,广泛应用于日志分析、全文检索、数据分析等领域。使用Docker安装Elasticsearch能够快速搭建环境,避免复杂的依赖配置。本文将详细介绍如何通过Docker安装Elasticsearch,并涵盖常见问题解决和优化配置。
---
## 二、准备工作
### 1. 安装Docker
确保已安装Docker环境:
```bash
# 检查Docker版本
docker --version
# 若未安装,参考官方文档安装:
# https://docs.docker.com/engine/install/
官方提供了多个版本的镜像,推荐使用指定版本(如8.11.1):
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.11.1
docker run -d \
--name es-single-node \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
docker.elastic.co/elasticsearch/elasticsearch:8.11.1
参数说明:
- -p 9200:9200
:暴露HTTP API端口。
- -p 9300:9300
:集群通信端口(单节点模式下可不使用)。
- discovery.type=single-node
:设置为单节点模式。
- ES_JAVA_OPTS
:配置JVM堆内存(建议不超过物理内存的50%)。
访问 http://localhost:9200
,返回如下JSON即成功:
{
"name" : "d4a4c3a7f5b2",
"cluster_name" : "docker-cluster",
"version" : { ... }
}
docker network create es-net
节点1:
docker run -d \
--name es-node1 \
--network es-net \
-p 9200:9200 \
-e "node.name=es-node1" \
-e "cluster.name=es-docker-cluster" \
-e "cluster.initial_master_nodes=es-node1" \
docker.elastic.co/elasticsearch/elasticsearch:8.11.1
节点2:
docker run -d \
--name es-node2 \
--network es-net \
-e "node.name=es-node2" \
-e "cluster.name=es-docker-cluster" \
-e "discovery.seed_hosts=es-node1" \
docker.elastic.co/elasticsearch/elasticsearch:8.11.1
避免容器删除后数据丢失:
docker run -d \
--name es-with-volume \
-v es_data:/usr/share/elasticsearch/data \
docker.elastic.co/elasticsearch/elasticsearch:8.11.1
创建 elasticsearch.yml
:
cluster.name: "custom-cluster"
network.host: 0.0.0.0
挂载配置文件:
docker run -d \
-v ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
docker.elastic.co/elasticsearch/elasticsearch:8.11.1
默认开启安全功能,首次启动会输出默认密码:
# 查看初始密码
docker logs es-container | grep "Password for the elastic user"
docker exec -it es-container \
bin/elasticsearch-certutil ca --out /tmp/elastic-stack-ca.p12 --pass ""
max virtual memory areas too low
# 临时解决
sudo sysctl -w vm.max_map_count=262144
# 永久生效(写入/etc/sysctl.conf)
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
ES_JAVA_OPTS
调整堆大小。
-e "bootstrap.memory_lock=true" \
--ulimit memlock=-1:-1
示例 docker-compose.yml
:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.1
environment:
- discovery.type=single-node
ports:
- "9200:9200"
volumes:
- es_data:/usr/share/elasticsearch/data
volumes:
es_data:
driver: local
启动命令:
docker-compose up -d
通过Docker安装Elasticsearch具有以下优势: 1. 快速部署:无需手动安装Java或配置环境。 2. 隔离性:容器化运行避免污染主机环境。 3. 灵活扩展:轻松实现单节点或集群部署。
建议生产环境中结合Kubernetes或Swarm实现高可用部署,并定期备份数据卷。
延伸阅读:
- Elasticsearch官方Docker指南
- Docker内存限制最佳实践 “`
注:实际内容约1500字,可根据需要补充以下内容扩展至3000字: 1. 更详细的性能调优参数说明 2. Kibana与Logstash的集成部署 3. 监控方案(如Prometheus+Granfa) 4. 实际用例分析(日志收集场景等)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。