title: docker-compose安装elasticsearch(集群)
date: 2021-12-07 22:00:15
categories:
- 安装elasticsearch
tags:
- docker
- elasticsearch
- kibana
cover: https://coupon-image.oss-cn-shanghai.aliyuncs.com/image/blog/elasticsearch.jpg

docker-compose安装elasticsearch集群与kibana

在工作目录创建docker-compose.yml文件

version: '2.2'
services:
# 节点一,
  es01:
    # 此处为 elasticsearch 的镜像版本, 具体版本可以去官网寻找,也可以直接使用此版本
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    # es01 为节点一名称,可以随意修改
    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:
      - data01:/usr/share/elasticsearch/data
    # 映射到外部宿主机端口, 这里只对主节点进行映射,其他节点并没有进行映射
    ports:
      - 9200:9200
    # 网络配置,增加此处主要是因为docker容器之间网络隔断,不互通。增加之后,则三个几点与kibana都在同一网络。
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    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:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3
    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:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
  # kibana 配置,如果已经有其他的kibana,可以去除此配置,直接配置其他kibana的ELASTICSEARCH_HOSTS
  kibana:
    container_name: kb
    image: docker.elastic.co/kibana/kibana:7.9.3
    environment:
      # 此处配置elasticsearch的host列表,
      ELASTICSEARCH_HOSTS: '["http://es01:9200"]'
    volumes:
      # 映射宿主机配置文件到kibana具体容器,  /home/docker/es/kibana.yml代表宿主机的文件路径, /usr/share/kibana/config/kibana.yml 此路径不需要修改,否则配置路径错误,配置文件无法生效
      - /home/docker/es/kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - '5601:5601'     #java、集群通信端口
    privileged: true    #环境变量
    networks:
      - elastic

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

# 此处网络配置
networks:
  elastic:
    # 网络桥接模式
    driver: bridge

执行命令启动容器

docker-compose up -d
-d 后台运行容器

查看容器日志(防止日志错误)

docker logs {容器id|容器名称}

kibana.yml文件内容

server.name: kibana
# server.publicBaseUrl: "http://172.1.1.14:5601"
# kibana的主机地址 0.0.0.0可表示监听所有IP
server.host: "0.0.0.0"
# kibana访问es的URL 如果es设置密码,则需要使用 username 、password配置
#elasticsearch.hosts: [ "http://172.1.1.14:9200" ]
# elasticsearch.username: 'kibana'
# elasticsearch.password: 'kibana'
# 显示登陆页面
#xpack.monitoring.ui.container.elasticsearch.enabled: true
# 语言-此处展示为 中文
i18n.locale: "zh-CN"