Docker?部署?Grafana持久化存儲(chǔ)配置避免重啟丟失的問(wèn)題
最穩(wěn)妥的做法是在啟動(dòng)容器時(shí),將宿主機(jī)目錄掛載到容器內(nèi)的 /var/lib/grafana 路徑,這樣即使容器被刪除重建,數(shù)據(jù)依然留在宿主機(jī)上。
先說(shuō)結(jié)論:通過(guò) Docker 體積掛載(Volume Mount)映射數(shù)據(jù)目錄是實(shí)現(xiàn)持久化的標(biāo)準(zhǔn)方案,適用于所有基于 Docker 的 Grafana 部署場(chǎng)景。
- 適合:需要保留儀表盤(pán)、數(shù)據(jù)源配置、插件及用戶信息的生產(chǎn)或測(cè)試環(huán)境。
- 先準(zhǔn)備:在宿主機(jī)創(chuàng)建用于存儲(chǔ)數(shù)據(jù)的目錄,并確認(rèn)文件權(quán)限。
- 驗(yàn)收:容器重啟后,檢查原有儀表盤(pán)和數(shù)據(jù)源配置是否依然存在。
原理說(shuō)明
Docker 容器的文件系統(tǒng)是分層的,默認(rèn)情況下,容器內(nèi)產(chǎn)生的所有寫(xiě)入操作都存儲(chǔ)在可寫(xiě)層中。一旦容器被刪除(docker rm),這一層數(shù)據(jù)就會(huì)隨之消失。Grafana 的核心配置、SQLite 數(shù)據(jù)庫(kù)(默認(rèn)存儲(chǔ)方式)、插件和用戶信息都保存在容器內(nèi)的 /var/lib/grafana 目錄下。如果不將這個(gè)目錄掛載到宿主機(jī),每次重建容器都相當(dāng)于是一次全新的安裝。
Docker CLI 部署步驟
第一步:準(zhǔn)備宿主機(jī)目錄在運(yùn)行容器前,先在宿主機(jī)創(chuàng)建一個(gè)目錄用于存放數(shù)據(jù)。例如:
mkdir -p ~/grafana-data
第二步:修正文件權(quán)限(關(guān)鍵)Grafana 官方容器默認(rèn)使用 UID 472 運(yùn)行。如果宿主機(jī)目錄權(quán)限不對(duì),容器可能無(wú)法寫(xiě)入數(shù)據(jù),導(dǎo)致啟動(dòng)失敗或數(shù)據(jù)無(wú)法保存。建議將目錄所有者改為 472:
chown -R 472:472 ~/grafana-data
第三步:?jiǎn)?dòng)容器使用 -v 參數(shù)掛載目錄啟動(dòng)容器。建議指定具體版本號(hào)代替 latest,避免意外升級(jí)導(dǎo)致兼容性問(wèn)題:
docker run -d -p 3000:3000 \ `--name`=grafana \ -v ~/grafana-data:/var/lib/grafana \ grafana/grafana-oss
Docker Compose 部署方案
對(duì)于生產(chǎn)環(huán)境,建議使用 Docker Compose 管理服務(wù),便于版本控制和配置維護(hù)。創(chuàng)建 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"啟動(dòng)服務(wù):
docker-compose up -d
驗(yàn)證持久化是否生效
1. 界面驗(yàn)證登錄 Grafana 網(wǎng)頁(yè),創(chuàng)建一個(gè)測(cè)試儀表盤(pán)或添加一個(gè)測(cè)試數(shù)據(jù)源。然后重啟容器:
docker restart grafana
刷新頁(yè)面,如果剛才創(chuàng)建的儀表盤(pán)和數(shù)據(jù)源還在,說(shuō)明持久化生效。
2. 文件驗(yàn)證查看宿主機(jī)掛載目錄,應(yīng)該能看到 grafana.db 等文件生成:
ls -l ~/grafana-data
常見(jiàn)坑與排查
1. 權(quán)限拒絕(Permission Denied)這是最常見(jiàn)的問(wèn)題。如果日志中出現(xiàn) panic 或無(wú)法寫(xiě)入 sqlite 的錯(cuò)誤,通常是宿主機(jī)目錄權(quán)限不屬于容器內(nèi)的用戶(UID 472)。不要隨意 chmod 777,優(yōu)先使用 chown 修正所有者。
2. 掛載路徑錯(cuò)誤確保掛載的是 /var/lib/grafana。有些舊教程可能指向其他路徑,或者只掛載了配置目錄 /etc/grafana 而忽略了數(shù)據(jù)目錄,這會(huì)導(dǎo)致配置保留但儀表盤(pán)丟失。
3. 容器重建而非重啟使用 docker restart 不會(huì)丟失數(shù)據(jù),但 docker rm 后重新 run 如果沒(méi)有 -v 參數(shù)則會(huì)丟失。持久化是為了應(yīng)對(duì)容器被刪除重建的場(chǎng)景。
參考來(lái)源
- Grafana Labs - Install Grafana using Docker: https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/
到此這篇關(guān)于Docker 部署 Grafana持久化存儲(chǔ)配置避免重啟丟失的問(wèn)題的文章就介紹到這了,更多相關(guān)Docker部署Grafana內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker打包node項(xiàng)目的過(guò)程講解
今天小編就為大家分享一篇關(guān)于docker打包node項(xiàng)目的過(guò)程講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Docker環(huán)境下的Apache NiFi安裝實(shí)踐及遇到問(wèn)題解決方案
由于最近用到數(shù)據(jù)同步,故打算采用中間件工具來(lái)做數(shù)據(jù)同步,誰(shuí)知第一步部署Apache NiFi環(huán)境就耽擱了好久,其中遇到一些問(wèn)題,故記錄下來(lái)部署成功記錄,下面給大家詳細(xì)介紹Docker環(huán)境下的Apache NiFi安裝實(shí)踐及遇到問(wèn)題解決方案,感興趣的朋友一起看看吧2025-05-05
docker倉(cāng)庫(kù)登錄及配置insecure-registries的方法
這篇文章主要介紹了docker倉(cāng)庫(kù)登錄配置insecure-registries的方法,docker客戶端如果配置中添加了insecure-registary配置,就不需要在docker 客戶端配置上對(duì)應(yīng)證書(shū),如果不配置要在/etc/docker/certs.d/目錄中添加對(duì)應(yīng)證書(shū)才能正常登錄,感興趣的朋友跟隨小編一起看看吧2022-07-07
Linux下Docker版本升級(jí)的保姆級(jí)教程
之前docker直接使用centos的yum -y install docker安裝的,安裝源的版本比較老,最近項(xiàng)目計(jì)劃使用docker的一些新特性,所以需要將docker版本做一下升級(jí),本文詳細(xì)記錄了升級(jí)的過(guò)程,需要的朋友可以參考下2025-08-08
超詳細(xì)Docker Desktop下安裝rocketmq的教程
這篇文章主要介紹了Docker Desktop下安裝rocketmq,本文內(nèi)容通過(guò)圖文操作命令給大家講解的非常詳細(xì),需要的朋友可以參考下2021-10-10
docker_data.vhdx占用系統(tǒng)盤(pán)過(guò)大的問(wèn)題解決辦法
docker_data.vhdx文件是docker用于存儲(chǔ)容器,鏡像和卷數(shù)據(jù)的虛擬硬盤(pán)文件,直接復(fù)制或遷移可能導(dǎo)致數(shù)據(jù)不一致或損壞,這篇文章主要介紹了docker_data.vhdx占用系統(tǒng)盤(pán)過(guò)大的問(wèn)題解決辦法,需要的朋友可以參考下2026-04-04
詳解Docker私有倉(cāng)庫(kù)最簡(jiǎn)便的搭建方法
本篇文章主要介紹了Docker私有倉(cāng)庫(kù)最簡(jiǎn)便的搭建方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02
在Docker中開(kāi)發(fā)Java 8 Spring Boot應(yīng)用程序的方法
在本文中,我將向您展示如何使用Java 8開(kāi)發(fā)和運(yùn)行簡(jiǎn)單的Spring Web應(yīng)用程序,而無(wú)需在本地計(jì)算機(jī)上安裝Java 8。感興趣的朋友跟隨小編一起看看吧2019-10-10

