docker-compose部署ElasticSearch集群

Elasticsearch Compose 配置文件

创建一个 docker-compose.yml 内容如下:

yaml 复制代码
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es01/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic

  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es02/data:/usr/share/elasticsearch/data
    networks:
      - elastic

  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es03/data:/usr/share/elasticsearch/data
    networks:
      - elastic

  kib01:
    image: docker.elastic.co/kibana/kibana:7.10.1
    container_name: kib01
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_URL: http://es01:9200
      ELASTICSEARCH_HOSTS: '["http://es01:9200","http://es02:9200","http://es03:9200"]'
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

事先创建如下数据挂载目录:

shell 复制代码
├── es01
│   └── data
├── es02
│   └── data
└── es03
    └── data

并且设置权限:

shell 复制代码
chmod -R 777 es01 es02 es03

执行 docker-compose up -d启动。

错误

文件权限

报错如下:

shell 复制代码
AccessDeniedException[/usr/share/elasticsearch/data/nodes]

提前将挂载目录创建好,并将权限设置好:

shell 复制代码
chmod -R 777 es01 es02 es03

内存不足

报错如下:

shell 复制代码
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改配置文件:

shell 复制代码
vi /etc/sysctl.conf

在文件末尾添加一行内容:

shell 复制代码
vm.max_map_count=262144

执行以下命令立即生效:

shell 复制代码
/sbin/sysctl -p

之后重新启动即可。

如果是 Win10 的 wsl 中的 docker

需执行以下命令:

shell 复制代码
wsl -d docker-desktop
sysctl -w vm.max_map_count=262144

之后重新启动。

相关推荐
秦jh_11 小时前
【Docker】镜像、卷原理
运维·docker·容器
程序员老赵11 小时前
Docker 部署 XWiki:轻松搭建企业知识库与协作 Wiki
前端·docker·开源
I'mChloe11 小时前
飞牛NAS部署flatnotes实战:Docker、8080端口、Markdown笔记与固定地址访问
笔记·docker·容器
Flynn Liang16 小时前
5分钟跑通MQTT:EMQX Docker部署+MQTTX联调(2026最新版,含踩坑)
物联网·mqtt·docker·iot·emqx
木雷坞18 小时前
Docker Compose端口映射排查:用port和inspect定位网页访问失败
运维·docker·容器
码间留白1 天前
手把手把 GitHub 推上阿里云 ECS:Actions CI/CD 全链路避坑实录(折腾好几天,到 2 分钟见绿)
运维·阿里云·ci/cd·docker·devops·github actions
Vex2une1 天前
Docker Desktop WSL2后端:2026年性能调优与避坑实战指南
windows·docker·desktop·gpu容器·容器开发·virtiofs·buildkit
程序员老赵1 天前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
TTATTC1 天前
为什么单会话聊天做不好复杂工程?Claude Code 创作者的并发 Worktree 与记忆闭环实践
docker·开源
TTATTC1 天前
状态机驱动长事务,还是 DAG 编排高并发?高可靠业务流程引擎的双核架构设计
docker·开源