Docker 部署 Grafana持久化存储配置避免重启丢失的问题
最稳妥的做法是在启动容器时,将宿主机目录挂载到容器内的 /var/lib/grafana 路径,这样即使容器被删除重建,数据依然留在宿主机上。
先说结论:通过 Docker 体积挂载(Volume Mount)映射数据目录是实现持久化的标准方案,适用于所有基于 Docker 的 Grafana 部署场景。
- 适合:需要保留仪表盘、数据源配置、插件及用户信息的生产或测试环境。
- 先准备:在宿主机创建用于存储数据的目录,并确认文件权限。
- 验收:容器重启后,检查原有仪表盘和数据源配置是否依然存在。
原理说明
Docker 容器的文件系统是分层的,默认情况下,容器内产生的所有写入操作都存储在可写层中。一旦容器被删除(docker rm),这一层数据就会随之消失。Grafana 的核心配置、SQLite 数据库(默认存储方式)、插件和用户信息都保存在容器内的 /var/lib/grafana 目录下。如果不将这个目录挂载到宿主机,每次重建容器都相当于是一次全新的安装。
Docker CLI 部署步骤
第一步:准备宿主机目录在运行容器前,先在宿主机创建一个目录用于存放数据。例如:
mkdir -p ~/grafana-data
第二步:修正文件权限(关键)Grafana 官方容器默认使用 UID 472 运行。如果宿主机目录权限不对,容器可能无法写入数据,导致启动失败或数据无法保存。建议将目录所有者改为 472:
chown -R 472:472 ~/grafana-data
第三步:启动容器使用 -v 参数挂载目录启动容器。建议指定具体版本号代替 latest,避免意外升级导致兼容性问题:
docker run -d -p 3000:3000 \ `--name`=grafana \ -v ~/grafana-data:/var/lib/grafana \ grafana/grafana-oss
Docker Compose 部署方案
对于生产环境,建议使用 Docker Compose 管理服务,便于版本控制和配置维护。创建 docker-compose.yml 文件:
version: '3.8'
services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- ./grafana-data:/var/lib/grafana
restart: unless-stopped
user: "472:472"启动服务:
docker-compose up -d
验证持久化是否生效
1. 界面验证登录 Grafana 网页,创建一个测试仪表盘或添加一个测试数据源。然后重启容器:
docker restart grafana
刷新页面,如果刚才创建的仪表盘和数据源还在,说明持久化生效。
2. 文件验证查看宿主机挂载目录,应该能看到 grafana.db 等文件生成:
ls -l ~/grafana-data
常见坑与排查
1. 权限拒绝(Permission Denied)这是最常见的问题。如果日志中出现 panic 或无法写入 sqlite 的错误,通常是宿主机目录权限不属于容器内的用户(UID 472)。不要随意 chmod 777,优先使用 chown 修正所有者。
2. 挂载路径错误确保挂载的是 /var/lib/grafana。有些旧教程可能指向其他路径,或者只挂载了配置目录 /etc/grafana 而忽略了数据目录,这会导致配置保留但仪表盘丢失。
3. 容器重建而非重启使用 docker restart 不会丢失数据,但 docker rm 后重新 run 如果没有 -v 参数则会丢失。持久化是为了应对容器被删除重建的场景。
参考来源
- Grafana Labs - Install Grafana using Docker: https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/
到此这篇关于Docker 部署 Grafana持久化存储配置避免重启丢失的问题的文章就介绍到这了,更多相关Docker部署Grafana内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Docker环境下的Apache NiFi安装实践及遇到问题解决方案
由于最近用到数据同步,故打算采用中间件工具来做数据同步,谁知第一步部署Apache NiFi环境就耽搁了好久,其中遇到一些问题,故记录下来部署成功记录,下面给大家详细介绍Docker环境下的Apache NiFi安装实践及遇到问题解决方案,感兴趣的朋友一起看看吧2025-05-05
docker仓库登录及配置insecure-registries的方法
这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置,就不需要在docker 客户端配置上对应证书,如果不配置要在/etc/docker/certs.d/目录中添加对应证书才能正常登录,感兴趣的朋友跟随小编一起看看吧2022-07-07
超详细Docker Desktop下安装rocketmq的教程
这篇文章主要介绍了Docker Desktop下安装rocketmq,本文内容通过图文操作命令给大家讲解的非常详细,需要的朋友可以参考下2021-10-10
docker_data.vhdx占用系统盘过大的问题解决办法
docker_data.vhdx文件是docker用于存储容器,镜像和卷数据的虚拟硬盘文件,直接复制或迁移可能导致数据不一致或损坏,这篇文章主要介绍了docker_data.vhdx占用系统盘过大的问题解决办法,需要的朋友可以参考下2026-04-04
在Docker中开发Java 8 Spring Boot应用程序的方法
在本文中,我将向您展示如何使用Java 8开发和运行简单的Spring Web应用程序,而无需在本地计算机上安装Java 8。感兴趣的朋友跟随小编一起看看吧2019-10-10


最新评论