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打包node项目的过程讲解

    docker打包node项目的过程讲解

    今天小编就为大家分享一篇关于docker打包node项目的过程讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Docker环境下的Apache NiFi安装实践及遇到问题解决方案

    Docker环境下的Apache NiFi安装实践及遇到问题解决方案

    由于最近用到数据同步,故打算采用中间件工具来做数据同步,谁知第一步部署Apache NiFi环境就耽搁了好久,其中遇到一些问题,故记录下来部署成功记录,下面给大家详细介绍Docker环境下的Apache NiFi安装实践及遇到问题解决方案,感兴趣的朋友一起看看吧
    2025-05-05
  • docker指令收集整理(收藏)

    docker指令收集整理(收藏)

    Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发,源代码托管在 Github 上, 遵从Apache2.0协议开源。这篇文章主要介绍了docker指令收集整理(收藏),需要的朋友可以参考下
    2017-02-02
  • Docker配置HTTP/HTTPS代理的方法

    Docker配置HTTP/HTTPS代理的方法

    本篇文章主要介绍了Docker配置HTTP/HTTPS代理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2018-06-06
  • docker仓库登录及配置insecure-registries的方法

    docker仓库登录及配置insecure-registries的方法

    这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置,就不需要在docker 客户端配置上对应证书,如果不配置要在/etc/docker/certs.d/目录中添加对应证书才能正常登录,感兴趣的朋友跟随小编一起看看吧
    2022-07-07
  • Linux下Docker版本升级的保姆级教程

    Linux下Docker版本升级的保姆级教程

    之前docker直接使用centos的yum -y install docker安装的,安装源的版本比较老,最近项目计划使用docker的一些新特性,所以需要将docker版本做一下升级,本文详细记录了升级的过程,需要的朋友可以参考下
    2025-08-08
  • 超详细Docker Desktop下安装rocketmq的教程

    超详细Docker Desktop下安装rocketmq的教程

    这篇文章主要介绍了Docker Desktop下安装rocketmq,本文内容通过图文操作命令给大家讲解的非常详细,需要的朋友可以参考下
    2021-10-10
  • docker_data.vhdx占用系统盘过大的问题解决办法

    docker_data.vhdx占用系统盘过大的问题解决办法

    docker_data.vhdx文件是docker用于存储容器,镜像和卷数据的虚拟硬盘文件,直接复制或迁移可能导致数据不一致或损坏,这篇文章主要介绍了docker_data.vhdx占用系统盘过大的问题解决办法,需要的朋友可以参考下
    2026-04-04
  • 详解Docker私有仓库最简便的搭建方法

    详解Docker私有仓库最简便的搭建方法

    本篇文章主要介绍了Docker私有仓库最简便的搭建方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-02-02
  • 在Docker中开发Java 8 Spring Boot应用程序的方法

    在Docker中开发Java 8 Spring Boot应用程序的方法

    在本文中,我将向您展示如何使用Java 8开发和运行简单的Spring Web应用程序,而无需在本地计算机上安装Java 8。感兴趣的朋友跟随小编一起看看吧
    2019-10-10

最新评论