docker部署es kibana
创建 Docker 网络
sudo docker network create docker_network_es
部署 Elasticsearch
创建临时容器并复制配置
sudo 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
创建外部挂载目录
sudo mkdir -p /server/db/es
从容器复制数据到宿主机
sudo docker cp elasticsearch:/usr/share/elasticsearch/data /server/db/es
sudo docker cp elasticsearch:/usr/share/elasticsearch/plugins /server/db/es
sudo docker cp elasticsearch:/usr/share/elasticsearch/config /server/db/es
赋予目录权限
cd /server/db/es
sudo chmod 777 -R config/ data/ plugins/
停止并删除临时容器
sudo docker stop elasticsearch && sudo docker rm elasticsearch
启动正式 Elasticsearch 容器(带密码配置)
可通过
-e环境变量直接设置 elastic 用户密码,避免后续手动重置:
ELASTIC_PASSWORD:设置 elastic 用户密码ELASTICSEARCH_USERNAME:自定义用户名(可选)ELASTICSEARCH_PASSWORD:自定义用户密码(可选)
sudo docker run -d \
--restart=always \
--name elasticsearch \
--network docker_network_es \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /server/db/es/data:/usr/share/elasticsearch/data \
-v /server/db/es/plugins:/usr/share/elasticsearch/plugins \
-v /server/db/es/config:/usr/share/elasticsearch/config \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms4g -Xmx4g -Duser.timezone=Asia/Shanghai" \
-e "ELASTIC_PASSWORD=your_password_here" \
elasticsearch:9.0.1
修改 elasticsearch.yml 配置
编辑 /server/db/es/config/elasticsearch.yml,添加以下内容:
http.port: 9200
xpack.security.http.ssl.enabled: false
xpack.security.http.transport.enabled: false
重启 Elasticsearch
sudo docker restart elasticsearch
重置密码(如未通过环境变量设置密码,可在容器内执行)
docker exec -it elasticsearch bash
bin/elasticsearch-reset-password -u elastic -i
exit
部署 Kibana
创建临时容器并复制配置
sudo 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
创建外部挂载目录
sudo mkdir -p /server/db/kibana
从容器复制数据到宿主机
sudo docker cp kibana:/usr/share/kibana/data /server/db/kibana
sudo docker cp kibana:/usr/share/kibana/config /server/db/kibana
赋予目录权限
cd /server/db/kibana
sudo chmod -R 777 config/ data/
停止并删除临时容器
sudo docker stop kibana && sudo docker rm kibana
修改 kibana.yml 配置
编辑 /server/db/kibana/config/kibana.yml,添加以下内容:
xpack.screenshotting.browser.chromium.disableSandbox: true
# elasticsearch.username: elastic
# elasticsearch.password: your_password_here
生成服务令牌(在 Elasticsearch 容器内执行)
docker exec -it elasticsearch bash
bin/elasticsearch-service-tokens create elastic/kibana my-kibana-token
# 将输出的 token 值添加到 kibana.yml 中,例如:
# elasticsearch.serviceAccountToken: "AAEAAW..."
exit
启动正式 Kibana 容器(带密码配置)
也可通过
-e环境变量直接配置 Kibana 连接 Elasticsearch 的用户名和密码:
ELASTICSEARCH_USERNAME:Elasticsearch 用户名ELASTICSEARCH_PASSWORD:对应密码
sudo docker run -d \
--restart=always \
--name kibana \
--network docker_network_es \
-p 5601:5601 \
--privileged \
-v /server/db/kibana/data:/usr/share/kibana/data \
-v /server/db/kibana/config:/usr/share/kibana/config \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
-e ELASTICSEARCH_USERNAME=elastic \
-e ELASTICSEARCH_PASSWORD=your_password_here \
kibana:9.0.1
可选:为 Kibana 创建独立访问账户
在 Elasticsearch 容器内执行:
# 创建用户
bin/elasticsearch-users useradd kibanaadmin
# 授权
bin/elasticsearch-users roles -a superuser kibanaadmin
bin/elasticsearch-users roles -a kibana_system kibanaadmin
临时容器 → 拷贝配置
# 启动临时 Kibana
docker run -d \
--name kibana-temp \
--network docker_network_es \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1
# 创建宿主机挂载目录
mkdir -p /server/db/kibana/{config,data}
# 拷贝配置与数据文件
docker cp kibana-temp:/usr/share/kibana/config/. /server/db/kibana/config/
docker cp kibana-temp:/usr/share/kibana/data/. /server/db/kibana/data/
# 授权
chmod -R 777 /server/db/kibana/
# 清理临时容器
docker stop kibana-temp && docker rm kibana-temp
修改配置文件
# 编辑 /server/db/kibana/config/kibana.yml,追加以下配置:
# 禁用 Chromium 沙箱
xpack.screenshotting.browser.chromium.disableSandbox: true
# Service Token 认证(推荐)
elasticsearch.serviceAccountToken: "AAEAAW..." # 替换为实际 Token
# 或使用账号密码(二选一)
# elasticsearch.username: elastic
# elasticsearch.password: boawayES
生成 Service Token
# 进入 ES 容器
docker exec -it <es容器名> bash
# 生成 Token
bin/elasticsearch-service-tokens create elastic/kibana my-kibana-token
# 将输出的 Token 粘贴到上方 kibana.yml 中
启动正式 Kibana
docker run -d \
--name kibana \
--restart always \
--network docker_network_es \
-p 5601:5601 \
--privileged \
-v /server/db/kibana/config:/usr/share/kibana/config \
-v /server/db/kibana/data:/usr/share/kibana/data \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
kibana:9.0.1
留待后查,同时方便他人
联系我:ivesbao@163.com
联系我:ivesbao@163.com

浙公网安备 33010602011771号