此方案仅用于开发、测试环境。
仓库地址:
Elasticsearch:https://hub.docker.com/_/elasticsearch
Kibana: https://hub.docker.com/_/kibana
参考:Install Elasticsearch with Docker | Elasticsearch Guide [7.16] | Elastic
拉取镜像
# Elasticsearch 7.16.2 基础镜像是 ubuntu:20.04 docker pull elasticsearch:7.16.2 # kibana:7.16.2 基础镜像是 centos:8 docker pull kibana:7.16.2
如需定制自己的 docker 镜像可参考:
dockerfiles/Dockerfile at v7.16.2 · elastic/dockerfiles (github.com)
创建 elasticsearch 数据挂载目录
export DIR_ES=${HOME}"/dockers/elasticsearch"
mkdir -p ${DIR_ES}/data
mkdir -p ${DIR_ES}/config
mkdir -p ${DIR_ES}/plugins
cd ${DIR_ES}
sudo chown -R 1000:0 data config plugins
创建 Kibana 配置文件 kibana.yml
# Default kibana configuration for docker target server.name: kibana server.host: "0.0.0.0" server.shutdownTimeout: "5s" elasticsearch.hosts: ["http://es01:9200"] monitoring.ui.container.elasticsearch.enabled: true i18n.locale: "zh-CN"
# 设置文件权限 sudo chown 1000:1000 kibana.yml
容器编排 docker-compose.yml
version: "3"
networks:
esnet:
driver: bridge
services:
es01:
image: elasticsearch:7.16.2
container_name: es01
environment:
- USER_UID=1000
- USER_GID=0
- node.name=es01
- cluster.name=es-docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms64m -Xmx512m"
- "discovery.type=single-node"
ulimits:
memlock:
soft: -1
hard: -1
restart: always
volumes:
- ./data:/usr/share/elasticsearch/data
# - ./config:/usr/share/elasticsearch/config
- ./plugins:/usr/share/elasticsearch/plugins
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "9200:9200"
- "9300:9300"
networks:
- esnet
kibana:
image: kibana:7.16.2
container_name: kibana7162
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- ./kibana.yml:/usr/share/kibana/config/kibana.yml
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "5601:5601"
depends_on:
- es01
networks:
- esnet
ES_JAVA_OPTS:限制使用内存,不建议生产环境使用。discovery.type=single-node:单节点运行。
检查配置
docker-compose config
启动服务
docker-compose up -d
查看启动日志
docker-compose logs -f
测试
curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"
浏览器访问 Kibana:http://host-ip:5601,其中 “host-ip” 需替换为你的主机 IP。
注:以上配置没有把 Elasticsearch 的配置文件目录 config 映射到宿主机,删除容器后配置会丢失。如需保留配置,可将容器内 config 目录 复制到宿主机:
docker cp -a es01:/usr/share/elasticsearch/config .
然后取消编排文件中 - ./config:/usr/share/elasticsearch/config 行的注释,重启容器。
异常处理(1) docker 启动 elasticsearch 异常 Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options
原因分析
配置了 config 目录的挂载数据卷,而启动时宿主机的挂载数据文件夹中并没有 jvm.options 文件,找不到文件报错。
解决方案
先将挂载 conf 目录的配置注释,启动 elasticsearch,启动成功后将容器中的 config 文件夹下的文件复制到宿主机,然后取消注释重新启动即可。
docker cp -a es01:/usr/share/elasticsearch/config .
– End –



