docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker部署Grafana

Docker 部署 Grafana持久化存储配置避免重启丢失的问题

作者:茶猫云呀

文章介绍了将宿主机目录挂载到容器的/var/lib/grafana路径,以实现Grafana数据的持久化,详细描述了在Docker和Docker Compose环境中实现这一方案的步骤,包括创建目录、修正文件权限、启动容器等,同时,文章还列举了一些常见问题及排查方法

最稳妥的做法是在启动容器时,将宿主机目录挂载到容器内的 /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 参数则会丢失。持久化是为了应对容器被删除重建的场景。

参考来源

到此这篇关于Docker 部署 Grafana持久化存储配置避免重启丢失的问题的文章就介绍到这了,更多相关Docker部署Grafana内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文