docker-compose文件如下:
version: '3'
services:
elasticsearch:
image: elasticsearch:8.15.0
container_name: elasticsearch
restart: always
environment:
- ELASTIC_PASSWORD=a8jxasll23mnasd1
ports:
- "9200:9200"
- "9200:9300"
volumes:
- "./elasticsearch-8.15.0/data:/usr/share/elasticsearch/data"
- "./elasticsearch-8.15.0/logs:/usr/share/elasticsearch/logs"
- "./elasticsearch-8.15.0/plugins:/usr/share/elasticsearch/plugins"
- "./elasticsearch-8.15.0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
- "./elasticsearch-8.15.0/certs:/usr/share/elasticsearch/config/certs"
挂卷需要需要准备四个目录,一套证书(可通过openssl命令生成)、一个配置文件。
先创建一个名为 elasticsearch-8.15.0 的文件夹,和docker-compose.yml放在同一个目录下。
在elasticsearch-8.15.0文件夹内创建certs,里面放置证书文件。

在elasticsearch-8.15.0文件夹内创建conf,conf文件夹创建elasticsearch.yml文件,内容为:
#集群名称 所有节点名称一致 (集群/单机配置)
cluster.name: bin-es-clusters
#当前该节点的名称,每个节点不能重复scan-es-node-1,scan-es-node-2,scan-es-node-3...
# (集群/单机配置)
node.name: bin-es-node-1
#当前该节点是不是有资格竞选主节点 (集群配置,单机注释)
#node.master: true
#当前该节点是否存储数据 (集群配置,单机注释)
#node.data: true
#设置为公开访问 (集群/单机配置)
network.host: 0.0.0.0
#设置其它节点和该节点交互的本机器的ip地址 (集群/单机配置)
# network.publish_host: 192.168.108.83
# 设置映射端口(集群/单机配置)
http.port: 9200
# 内部节点之间沟通端口 (集群配置,单机注释)
#transport.tcp.port: 9300
#支持跨域访问 (集群/单机配置)
http.cors.enabled: true
http.cors.allow-origin: "*"
#安全控制 (集群/单机配置)
#开启es密码配置及https访问
xpack.security.enabled: true
#es从8.x开始,如果要开启es密码配置,下面配置也必须设置为true,此时还需要配置证书
xpack.security.transport.ssl.enabled: true
#开启https访问
xpack.security.http.ssl.enabled: false
xpack.security.http.ssl.key: /usr/share/elasticsearch/config/certs/server.key
xpack.security.http.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt
xpack.security.http.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/certs/server.crt" ]
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/certs/server.key
xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt
xpack.security.transport.ssl.certificate_authorities: [ "/usr/share/elasticsearch/config/certs/server.crt" ]
#若只需要配置密码,不需要https访问,则如下配置即可
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.key: /usr/share/elasticsearch/config/certs/server.key
#xpack.security.transport.ssl.certificate: /usr/share/elasticsearch/config/certs/server.crt
#配置集群的主机地址 (集群配置,单机注释)
#discovery.seed_hosts: ["192.168.xxx.xxx"]
#初始主节点,使用一组初始的符合主条件的节点引导集群 (集群/单机配置)
cluster.initial_master_nodes: ["bin-es-node-1"]
#节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂 (集群配置,单机注释)
#discovery.zen.ping_timeout: 30s
#配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1 (集群配置,单机注释)
#discovery.zen.minimum_master_nodes: 1
#禁用交换内存,设置true 提升效率 (集群/单机配置)
bootstrap.memory_lock: false
# http传输内容的最大容量 (集群/单机配置)
http.max_content_length: 200mb
在elasticsearch-8.15.0文件夹内创建data文件夹;
在elasticsearch-8.15.0文件夹内创建plugins文件夹;
创建完成四个文件夹后,执行:
chmod -R 777 ./elasticsearch-8.15.0;
启动:docker-compose up -d。
遇到起不来的问题,执行:
sysctl -w vm.max_map_count=262144;
如果仍有报错:{"@timestamp":"2025-10-24T09:01:30.687Z", "log.level":"ERROR", "message":"node validation exception\n[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.15/bootstrap-checks.html\]\nbootstrap check failure [1] of [1]: max file descriptors [1024] for elasticsearch process is too low, increase to at least [65535]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.15/_file_descriptor_check.html\]", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.Elasticsearch","elasticsearch.node.name":"bin-es-node-1","elasticsearch.cluster.name":"bin-es-clusters"}
修改docker-compose的配置文件,新增:
关键配置:提高文件描述符限制
ulimits:
nofile:
soft: 65535
hard: 65535
即docker-compose.yml文件为:
version: '3'
services:
elasticsearch:
image: elasticsearch:8.15.0
container_name: elasticsearch
restart: always
environment:
- ELASTIC_PASSWORD=a8jxasll23mnasd1
ports:
- "9200:9200"
- "9200:9300"
volumes:
- "./elasticsearch-8.15.0/data:/usr/share/elasticsearch/data"
- "./elasticsearch-8.15.0/logs:/usr/share/elasticsearch/logs"
- "./elasticsearch-8.15.0/plugins:/usr/share/elasticsearch/plugins"
- "./elasticsearch-8.15.0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
- "./elasticsearch-8.15.0/certs:/usr/share/elasticsearch/config/certs"
# 关键配置:提高文件描述符限制
ulimits:
nofile:
soft: 65535
hard: 65535