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

 更新时间:2026年05月19日 08:49:02   作者:茶猫云呀  
文章介绍了将宿主机目录挂载到容器的/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 参数则会丢失。持久化是为了应对容器被删除重建的场景。

参考来源

  • Grafana Labs - Install Grafana using Docker: https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/

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

相关文章

  • 解决docker访问外部https数字证书问题

    解决docker访问外部https数字证书问题

    这篇文章主要介绍了docker访问外部https数字证书问题,为了解决证书验证的问题,我们需要在构建 docker 镜像的时候将 ca-certificates 根证书装上,需要的朋友可以参考下
    2022-09-09
  • docker容器调用yum报错的解决办法

    docker容器调用yum报错的解决办法

    在本篇文章里小编给大家分享的是关于docker容器调用yum报错的解决办法,有兴趣的朋友们可以参考下。
    2020-03-03
  • 详解Docker退出容器不关闭容器的方法

    详解Docker退出容器不关闭容器的方法

    进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢?现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Docker容器中数据卷volumes的使用

    Docker容器中数据卷volumes的使用

    volume(卷)用来存储docker持久化的数据,其实就是一个主机上的一个目录,由docker统一管理,下面这篇文章主要给大家介绍了关于Docker容器中数据卷volumes使用的相关资料,需要的朋友可以参考下
    2022-04-04
  • Docker镜像用普通用户启动服务的实现

    Docker镜像用普通用户启动服务的实现

    使用普通用户启动Docker容器中的服务,可以有效降低潜在的安全风险,本文主要介绍了Docker镜像用普通用户启动服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • dockerfile指令构建docker镜像的示例代码

    dockerfile指令构建docker镜像的示例代码

    本文主要介绍了dockerfile指令构建docker镜像的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Docker 限制容器可用的CPU的方式

    Docker 限制容器可用的CPU的方式

    这篇文章主要介绍了Docker 限制容器可用的CPU的方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Docker+nacos+seata1.3.0安装与使用配置教程

    Docker+nacos+seata1.3.0安装与使用配置教程

    这篇文章主要介绍了Docker+nacos+seata1.3.0安装与使用配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • docker私有仓库Harbor配置

    docker私有仓库Harbor配置

    本文主要介绍了在openEuler或rockylinux上配置docker私有仓库Harbor,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 如何在 Docker 中启动 Jupyter Notebook

    如何在 Docker 中启动 Jupyter Notebook

    这篇文章主要介绍了如何在 Docker 中启动 Jupyter Notebook,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-05-05

最新评论