需通过命令行用Docker Compose部署Elasticsearch三节点集群及Kibana:先安装宝塔Docker插件,再调高vm.max_map_count并禁用swap,接着创建docker-compose.yml定义es01/es02/es03与kibana服务,最后SSH执行docker-compose up -d启动并验证集群状态为green。

如果您希望在宝塔面板中借助 Docker 快速构建一个具备高可用性与横向扩展能力的搜索集群环境,则需绕过宝塔原生应用商店的单一容器限制,采用命令行驱动的 Docker Compose 编排方式部署 Elasticsearch、Kibana 与 Logstash(或 OpenSearch + Dashboards)组合。以下是具体实施步骤:
一、安装并启用宝塔面板的Docker管理插件
宝塔面板默认不集成 Docker 运行时,需手动安装官方 Docker 插件以获得容器生命周期管理能力,并确保后台服务可被外部访问。该插件提供图形化容器启停与端口映射功能,是后续集群部署的基础支撑。
1、登录宝塔面板,在左侧菜单栏点击【软件商店】,在搜索框中输入 Docker。
2、找到【Docker 管理器】插件,点击【安装】按钮,等待状态变为“已安装”。
3、安装完成后点击【设置】,勾选【开机自启】与【Docker 服务开机启动】,点击【保存】。
4、返回插件列表,点击【Docker 管理器】进入控制台,确认右上角显示 Docker 服务正在运行。
二、配置内核参数以支持Elasticsearch内存锁定
Elasticsearch 要求宿主机开启 vm.max_map_count 参数并禁用 swap,否则节点将拒绝启动。宝塔面板无法直接修改系统级 sysctl 配置,必须通过 SSH 手动执行生效指令。
1、使用 SSH 工具(如 Xshell 或终端)连接服务器,执行命令:sudo sysctl -w vm.max_map_count=262144。
2、执行命令持久化该设置:echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf。
3、执行命令禁用 swap:sudo swapoff -a。
4、编辑 /etc/fstab 文件,注释掉所有含 swap 的行,防止重启后自动挂载。
三、创建docker-compose.yml部署三节点Elasticsearch集群
使用 Docker Compose 可一次性拉起多个相互发现的 Elasticsearch 实例,通过 discovery.seed_hosts 和 cluster.initial_master_nodes 实现自动集群组建。本方案采用 3 个数据节点构成最小高可用单元。
1、在宝塔面板【文件】管理中,进入 /www/wwwroot/search-cluster 目录(若不存在则新建)。
2、点击【新建文件】,命名为 docker-compose.yml,粘贴以下内容:
3、在文件中写入如下 YAML 配置(注意缩进为两个空格,不可用 Tab):
version: '3.8'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.2
container_name: es01
environment:
- node.name=es01
- cluster.name=docker-cluster
- discovery.seed_hosts=es01,es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- ES_JAVA_OPTS=-Xms1g -Xmx1g
- xpack.security.enabled=false
- network.host=0.0.0.0
ports:
- 9200:9200
- 9300:9300
volumes:
- es01_data:/usr/share/elasticsearch/data
restart: unless-stopped
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.2
container_name: es02
environment:
- node.name=es02
- cluster.name=docker-cluster
- discovery.seed_hosts=es01,es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- ES_JAVA_OPTS=-Xms1g -Xmx1g
- xpack.security.enabled=false
- network.host=0.0.0.0
volumes:
- es02_data:/usr/share/elasticsearch/data
restart: unless-stopped
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.2
container_name: es03
environment:
- node.name=es03
- cluster.name=docker-cluster
- discovery.seed_hosts=es01,es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- ES_JAVA_OPTS=-Xms1g -Xmx1g
- xpack.security.enabled=false
- network.host=0.0.0.0
volumes:
- es03_data:/usr/share/elasticsearch/data
restart: unless-stopped
volumes:
es01_data:
es02_data:
es03_data:
四、通过SSH执行docker-compose启动集群
宝塔面板的 Docker 插件不支持直接解析 docker-compose.yml,必须切换至终端模式调用 Docker Compose CLI 完成编排部署。该方式可精确控制网络、卷挂载与健康检查策略。
1、在服务器终端中进入配置目录:cd /www/wwwroot/search-cluster。
2、执行命令拉取镜像并启动全部服务:sudo docker-compose up -d。
3、执行命令查看容器运行状态:sudo docker-compose ps,确认 es01/es02/es03 状态均为 Up (healthy)。
4、执行命令验证集群健康:curl -X GET "http://localhost:9200/_cluster/health?pretty",响应中 "status" : "green" 表示集群正常。
五、部署Kibana实现可视化管理界面
Kibana 作为 Elasticsearch 的官方前端,需与集群网络互通并指定正确的 elasticsearch.hosts 地址。由于 Docker 默认桥接网络隔离,必须将其加入与 Elasticsearch 相同的自定义网络才能通信。
1、编辑前述 docker-compose.yml 文件,在末尾 volumes 上方新增 kibana 服务区块(保持相同缩进层级):
2、添加如下内容:
kibana:
image: docker.elastic.co/kibana/kibana:8.12.2
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://es01:9200
- I18N_LOCALE=zh-CN
- SERVER_REWRITE_BASEPATH=true
ports:
- 5601:5601
depends_on:
- es01
- es02
- es03
restart: unless-stopped
3、保存文件后执行:sudo docker-compose up -d kibana。
4、在宝塔面板【安全】页面放行 5601 端口,然后通过浏览器访问 http://您的服务器IP:5601 进入 Kibana 控制台。











