docker kibana自定义镜像

Kibana 9.0.1 基础镜像重新打包文档


目录说明

本文档涉及三个工作目录:

路径 用途
/server/new/kibana/origin 存放从官方镜像复制出来的原始配置文件
/server/new/kibana/build 构建上下文目录,用于打包自定义镜像
/server/new/kibana/result 打包完成后,用于测试启动容器的空路径

一、创建 Docker 网络(如已存在可跳过)

sudo docker network create docker_network_es

二、从官方镜像复制配置文件到 origin 目录

1. 创建 origin 目录

sudo mkdir -p /server/new/kibana/origin

2. 启动临时容器

sudo docker run -d \
  --name kibana-origin \
  --network docker_network_es \
  kibana:9.0.1

3. 复制配置文件

sudo docker cp kibana-origin:/usr/share/kibana/config/. /server/new/kibana/origin/

4. 停止并删除临时容器

sudo docker stop kibana-origin && sudo docker rm kibana-origin

三、修改配置文件参数

编辑 /server/new/kibana/origin/kibana.yml:

sudo vim /server/new/kibana/origin/kibana.yml

修改/新增以下参数:

# 服务基础配置
server.host: "0.0.0.0"
server.port: 5601

# Elasticsearch 连接配置
elasticsearch.hosts: ["http://elasticsearch:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "boawayES"

# 中文语言
i18n.locale: "zh-CN"

# 禁用沙箱(截图/报表功能需要)
xpack.screenshotting.browser.chromium.disableSandbox: true

四、准备构建目录并打包镜像

1. 创建构建目录

sudo mkdir -p /server/new/kibana/build

2. 复制配置文件到构建目录

sudo cp -r /server/new/kibana/origin/kibana.yml /server/new/kibana/build/

3. 复制时区文件

sudo cp /etc/localtime /server/new/kibana/build/localtime
sudo cp /etc/timezone /server/new/kibana/build/timezone

4. 修改权限(构建前处理)

cd /server/new/kibana/build
sudo chown -R 1000:0 .

5. 创建 Dockerfile

sudo vim /server/new/kibana/build/Dockerfile

内容:

FROM kibana:9.0.1

ENV TZ=Asia/Shanghai

COPY localtime /etc/localtime
COPY timezone  /etc/timezone
COPY kibana.yml /usr/share/kibana/config/kibana.yml

EXPOSE 5601

CMD ["/usr/local/bin/kibana-docker"]

6. 构建镜像

cd /server/new/kibana/build
sudo docker build -t 192.168.2.2/library/kibana-bw:9.0.1 .

7. 推送镜像仓库

sudo docker push 192.168.2.2/library/kibana-bw:9.0.1

8. 导出 tar 包(离线环境)

sudo docker save 192.168.2.2/library/kibana-bw:9.0.1 \
  -o /server/new/kibana/kibana-bw-9.0.1.tar

五、在 result 目录用新镜像测试

1. 准备测试目录

sudo mkdir -p /server/new/kibana/result/data
cd /server/new/kibana/result

2. 启动临时容器复制配置文件

sudo docker run -d --name kibana-verify 192.168.2.2/library/kibana-bw:9.0.1 sleep 120

sudo docker cp kibana-verify:/usr/share/kibana/config/. ./config/

sudo docker rm -f kibana-verify

3. 修权限

sudo chown -R 1000:0 config
find config -type f -exec chmod 644 {} \;
find config -type d -exec chmod 755 {} \;
sudo chown -R 1000:0 data

4. 确认配置文件内容正确

cat config/kibana.yml

确认包含你修改的参数。


六、启动最终容器

sudo docker run -d \
  --restart=always \
  --name kibana \
  --network docker_network_es \
  -p 5601:5601 \
  --privileged \
  -v $(pwd)/config:/usr/share/kibana/config \
  -v $(pwd)/data:/usr/share/kibana/data \
  192.168.2.2/library/kibana-bw:9.0.1

七、验证服务

sleep 40

# 查看日志
sudo docker logs kibana --tail 15

# 检查状态
curl http://localhost:5601/api/status

八、目录结构总结

/server/new/kibana/
├── origin/             # 从官方镜像复制出的原始配置文件
│   └── kibana.yml
│
├── build/              # 构建上下文(用于打包镜像)
│   ├── Dockerfile
│   ├── kibana.yml            # 已修改参数
│   ├── localtime             # 时区文件
│   └── timezone              # 时区文件
│
└── result/             # 测试运行目录
    ├── config/         # 从镜像复制出的配置(可修改)
    └── data/           # Kibana 运行数据(自动生成)

关键注意事项

事项 说明
数据目录不能 COPY data 目录必须让 Kibana 首次启动自己初始化
权限必须 1000:0 Kibana 以 uid=1000 运行,config/data 都必须是 1000:0
不要用 chmod 777 777 权限会被安全机制拒绝,必须精确 644/755 + owner 1000
配置修改在宿主机 挂载后改 /server/new/kibana/result/config/kibana.yml,重启即生效
修改配置后重启 sudo docker restart kibana
kibana_system 密码一致性 镜像内密码需与 ES 启动时传入的 kibana_system 密码保持一致
镜像地址 统一使用 192.168.2.2/library/kibana-bw:9.0.1
posted @ 2026-09-29 15:03  Hey,Coder!  阅读(2)  评论(0)    收藏  举报