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

之后重新启动。

相关推荐
johnny2331 小时前
镜像管理工具Skopeo实战
docker
极客先躯15 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
ChaITSimpleLove17 小时前
SimpleIdServer 6.0.4 Docker Compose 实战部署指南
运维·docker·容器·身份认证·id-server·simpleidserver
风曦Kisaki21 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes
毛驴赶鹿1 天前
低配置服务器怎么搭建监控?Komari Docker部署与公网访问完整教程
运维·服务器·docker
冷莫溪1 天前
Docker——3.Harbor 核心架构与原理详解
docker·容器·架构
冷莫溪1 天前
Docker——1.安装与相关命令
运维·服务器·docker·容器
Allen_LVyingbo1 天前
基于结构化电子病历的临床风险预测模型构建与大模型协同优化
python·安全·机器学习·docker·vim·健康医疗
暖和_白开水2 天前
数据分析agent(十三_3):docker mysql容器镜像服务的异常错误
mysql·docker·容器