使用docker安装配置 elasticsearch + kibana

使用docker安装配置 elasticsearch8.18.0 + kibana8.18.0

使用docker-compose文件安装步骤如下:

  • 当 compose 文件名为 docker-compose.yaml 时,可以省略 -f 参数。否则所有执行 docker-compose 命令时都需要指定 -f 参数。
  • 这是基于Linux系统的操作,Windows用户的操作有所区别。
    • windows用户可以通过创建挂载卷的方式来管理相关配置文件和数据。docker volume create <volume-name>
    • 必须先创建挂在卷,然后在docker-compose.yaml文件中配置挂载卷,最后可以一次性的启动成功,无需经过复制配置文件的步骤。
  • Linux用户将配置文件复制到宿主机,然后启动容器,容器会自动读取配置文件,无需挂载卷。宿主机内的文件更方便管理。

1、创建如下的docker-compose.yaml文件

name: local-dev
services:
  elasticsearch:
    image: elasticsearch:8.18.0
    container_name: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true # 开启安全认证,但是禁用 SSL
      - xpack.security.http.ssl.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - ES_JAVA_OPTS=-Xms1g -Xmx3g
      - ELASTIC_PASSWORD=my_elastic_password  # 设置 elastic 用户的密码
    networks: # 配置网络【可忽略该配置】
      - my-network
    # 数据持久化、配置文件、插件
    volumes:
      - /data/elasticsearch/data:/usr/share/elasticsearch/data # 数据持久化
      # 如需放ik分词器插件,记得配置上停止词字典
      # - /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins
    restart: unless-stopped # 容器退出时总是重启,除非手动停止【可忽略该配置】

  kibana:
    image: kibana:8.18.0
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=kibana_system # 设置 kibana_system 用户的用户名【kibana需要在后台连接es,需要es提供一个账号】
      - ELASTICSEARCH_PASSWORD=your_kibana_system_password # 此行的密码可以为任意值,下面的操作将会设置成这个密码
    networks:
      - my-network
    depends_on:
      - elasticsearch # kibana 依赖 elasticsearch
    restart: unless-stopped

networks:
  my-network:
    driver: bridge

2. 先启动es,并将es的配置文件复制到宿主机

mkdir -p /data/elasticsearch/data # 递归创建数据持久化目录
docker compose up elasticsearch -d

docker cp elasticsearch:/usr/share/elasticsearch/config /data/elasticsearch/
# docker cp <elasticsearch的容器名>:/usr/share/elasticsearch/config /data/elasticsearch/

3. 在es中生成kibana所需的账号密码

# 配置一下 kibana_system 这个账户的自定义密码
# 输入此命令后,需要输入y后,再输入两次yaml文件中配置的密码
# 需要将这个 账号+密码 配置到kibana的yaml中
docker exec -it elasticsearch bin/elasticsearch-reset-password -u kibana_system -i
# [-u, --username] 该参数指定用户名,必须携带此参数
# [-i, --interactive] 该参数指定交互式输入密码。不携带此参数时,将会生成一个随机密码

4. 启动kibana,并将kibana的配置文件复制到宿主机

docker compose up kibana -d

mkdir -p /data/kibana
docker cp kibana:/usr/share/kibana/config /data/kibana/

5. 在kibana中生成一组用于存储对象、会话信息和报告数据的加密密钥

docker exec -it kibana kibana-encryption-keys generate
# docker exec -it <kibana的容器名> kibana-encryption-keys generate

生成的密钥如下,密钥可以多次生成:

xpack.encryptedSavedObjects.encryptionKey: 9f51f0ca45e26dffbac3b335b57736c6
xpack.reporting.encryptionKey: cbedf2f1e115ecbc29186065288cb1e6
xpack.security.encryptionKey: f9d61ebab8e544ff397ac271b3feea08

6. 修改kibana的配置文件 kibana.yml ,配置中文语言及密钥

vim /data/kibana/kibana.yml

# 在打开的文件中增加如下配置:
i18n.locale: "zh-CN"
xpack.encryptedSavedObjects.encryptionKey: xxx-上一步生成的密钥
xpack.reporting.encryptionKey: xxx-上一步生成的密钥
xpack.security.encryptionKey: xxx-上一步生成的密钥

7. 下线es和kibana,修改docker-compose.yaml文件后重新启动

下线操作如下:

docker compose down elasticsearch
docker compose down kibana

yaml文件如下:

name: local-dev
services:
  elasticsearch:
    image: elasticsearch:8.18.0
    container_name: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - ES_JAVA_OPTS=-Xms1g -Xmx3g
      - ELASTIC_PASSWORD=my_elastic_password
    networks:
      - my-network
    volumes:
      - /data/elasticsearch/data:/usr/share/elasticsearch/data
      - /data/elasticsearch/config:/usr/share/elasticsearch/config # 此行有改动
      - es8.18-config:/usr/share/elasticsearch/config
    restart: unless-stopped

  kibana:
    image: kibana:8.18.0
    container_name: kibana
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=your_kibana_system_password
    networks:
      - my-network
    depends_on:
      - elasticsearch
    volumes:
      - /data/kibana/config:/usr/share/kibana/config # 此行有改动
    restart: unless-stopped

networks:
  my-network:
    driver: bridge

上线

docker compose up -d
posted @ 2025-11-12 10:59  azsd  阅读(32)  评论(0)    收藏  举报