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
posted @ 2026-09-29 13:58  Hey,Coder!  阅读(2)  评论(0)    收藏  举报