- 创建 elasticsearch与kibana 所用网络
docker network create docker_network_es
- 安装elasticsearch
#创建 临时elasticsearch 用于cp相关配置信息
docker run -d \
--restart=always \
--name elasticsearch \
--network docker_network_es \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms4g -Xmx4g" \
elasticsearch:9.0.1
#创建elasticsearch相关配置目录用于容器外部挂载
mkdir /Users/{yourhostname}/elasticsearch/
#从容器中复制相关目录到挂载目录下
docker cp elasticsearch:/usr/share/elasticsearch/data /Users/{yourhostname}/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/plugins /Users/{yourhostname}/elasticsearch/
docker cp elasticsearch:/usr/share/elasticsearch/config /Users/{yourhostname}/elasticsearch/
#赋权限
cd /Users/{yourhostname}/elasticsearch/
chmod 777 -R config/ data/ plugins/
#停止、移除 临时elasticsearch
docker stop elasticsearch && docker rm elasticsearch
#启动 elasticsearch
docker run -d \
--restart=always \
--name elasticsearch \
--network docker_network_es \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /Users/{yourhostname}/elasticsearch/data:/usr/share/elasticsearch/data \
-v /Users/{yourhostname}/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /Users/{yourhostname}/elasticsearch/config:/usr/share/elasticsearch/config \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms4g -Xmx4g" \
elasticsearch:9.0.1
#修改容器外挂载目录中的elasticsearch.yml
#新增 开启http 9200端口
http.port: 9200
#修改 关闭https
xpack.security.http.ssl.enabled: false
xpack.security.http.transport.enabled: false
#重启
docker restart elasticsearch
3.安装kibana
#创建 临时kibana 用于cp相关配置信息
docker run -d \
--restart=always \
--name kibana \
--network docker_network_es \
-p 5601:5601 \
--privileged \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1
#创建kibana相关配置目录用于容器外部挂载
mkdir /Users/{yourhostname}/kibana/
#从容器中复制相关目录到挂载目录下
docker cp kibana:/usr/share/kibana/data /Users/{yourhostname}/kibana
docker cp kibana:/usr/share/kibana/config /Users/{yourhostname}/kibana
#赋权限
cd /Users/{yourhostname}/kibana/
chmod -R 777 config/ data/
#停止、移除 临时kibana
docker stop kibana && docker rm kibana
#创建为kibana创建新账户,用于访问elasticsearch
#容器内 /usr/share/elasticsearch/bin 目录下
elasticsearch-users useradd admin
#给账户授权
elasticsearch-users roles -a superuser admin
elasticsearch-users roles -a kibana_system admin
#修改容器外挂载目录中的kibana.yml
#新增
xpack.screenshotting.browser.chromium.disableSandbox: true
elasticsearch.username: admin
elasticsearch.password: admin123
#启动 kibana
docker run -d \
--restart=always \
--name kibana \
--network docker_network_es \
-p 5601:5601 \
--privileged \
-v /Users/{yourhostname}/kibana/data:/usr/share/kibana/data \
-v /Users/{yourhostname}/kibana/config:/usr/share/kibana/config \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1
kibana log中 建议 修改xpack相关配置
#kibana log
[2025-05-27T03:56:57.599+00:00][WARN ][plugins.encryptedSavedObjects] Saved objects encryption key is not set. This will severely limit Kibana functionality. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.
Kibana容器中/bin目录下 执行kibana-encryption-keys generate
修改kibana.yml 并 重启kibana
#修改kibana.yml
xpack.encryptedSavedObjects.encryptionKey: f3223d10042a368d0e0fb2be8ce08c11
xpack.reporting.encryptionKey: b54ee64097d941bc42a729537a4d8810
xpack.security.encryptionKey: 04beaaf7ad3eef20e9206532336f8677
#重启kibana
docker restart kibana
- 打开 http://localhost:9200 用admin登录, 验证Elasticsearch 是否正常启动
4.1 打开 http://localhost:9200/_cat/health?v 查看节点健康状态
如果状态为red,单机部署经常会出现以下日志,[index_not_green_timeout]
[2025-05-27T04:49:42.658+00:00][ERROR][savedobjects-service] [.kibana_alerting_cases] Action failed with '[index_not_green_timeout] Timeout waiting for the status of the [.kibana_alerting_cases_9.0.1_001] index to become 'green' Refer to https://www.elastic.co/guide/en/kibana/9.0/resolve-migrations-failures.html#_repeated_time_out_requests_that_eventually_fail for information on how to resolve the issue.'. Retrying attempt 1 in 2 seconds.
[2025-05-27T04:49:42.658+00:00][INFO ][savedobjects-service] [.kibana_alerting_cases] CREATE_NEW_TARGET -> CREATE_NEW_TARGET. took: 300032ms.
Tips:
本地单机部署多为内存不足,注意给Elasticsearch部署留6G+的内存
先 docker stop elasticsearch && docker stop kibana
再 docker restart elasticsearch
后 docker restart kibana
- 打开 http://0.0.0.0:5601用admin登录,验证Kibana 是否正常启动
6. 开始Elasticsearch+Kibana 愉快之旅