Docker 上的 Grafana 7.3.0 存在权限问题

Posted

技术标签:

【中文标题】Docker 上的 Grafana 7.3.0 存在权限问题【英文标题】:Having permissions issues with Grafana 7.3.0 on Docker 【发布时间】:2021-09-14 13:19:36 【问题描述】:

我正在使用 docker-compose 使用 InfluxDB、python 脚本和 Grafana 创建一个 Docker 容器网络,以收集和可视化不同网站的响应代码、查询时间和其他统计信息。

我正在使用带有卷的 Grafana 映像 7.3.0, 我已经修改了路径环境变量,所以我只需要使用一个卷来保存所有数据。

当我启动 Grafana 容器时,它会记录:

GF_PATHS_CONFIG='/etc/grafana/grafana.ini' is not readable.
GF_PATHS_DATA='/etc/grafana/data' is not writable.
GF_PATHS_HOME='/etc/grafana/home' is not readable.

You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migration-from-a-previous-version-of-the-

docker-container-to-5-1-or-later

mkdir: can't create directory '/etc/grafana/plugins': Permission denied

但问题是,我没有从低于 5.1 的版本迁移,我什至根本没有迁移!

所以我尝试按照他们的指示更改文件的权限,但没有成功。

我尝试在 docker-compose 中设置用户 ID,但没有帮助。

(如文档中所述 472 == post 5.1, 104 == pre 5.1 但两者均无效)

我什至无法手动更改权限(顺便说一句,这不是一个令人满意的解决方案),因为容器正在崩溃。

我通常不问问题,因为他们已经有了答案,但我没有看到有人在使用 7.3.0 时遇到这个问题,所以我想是时候发光了哈哈。

这是我的 docker-compose.yml(只有 grafana 部分)

version: '3.3'

services:
  grafana:
    image: grafana/grafana:7.3.0
    ports:
      - '3000:3000'
    volumes:
      - './grafana:/etc/grafana'
    networks:
      - db-to-grafana
    depends_on:
      - db
      - influxdb_cli
    environment:
      - GF_PATHS_CONFIG=/etc/grafana/grafana.ini
      - GF_PATHS_DATA=/etc/grafana/data
      - GF_PATHS_HOME=/etc/grafana/home
      - GF_PATHS_LOGS=/etc/grafana/logs
      - GF_PATHS_PLUGINS=/etc/grafana/plugins
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
   user: "472"

非常感谢您的潜在帮助!

编辑:我一直想知道最新版本(8.0)中是否有 grafana 用户,我认为使用 Dockerfile 为 grafana 构建主目录可能是我只需要找到该用户的解决方案。

【问题讨论】:

grafana.com/docs/grafana/latest/installation/docker/… @JanGaraj 感谢您的帮助!我已经看过那个文档,但我没有迁移,我已经尝试过这个策略,但我想我可能做错了。你能澄清你的观点吗?再次感谢 在compose中省略user: "472"参数会发生什么?我猜它应该以root身份运行,你还不能访问它吗?另一种解决方案可能是将您的 grafana 文件夹从 /etc/ 移动到另一个文件夹并相应地更改 GF_PATHS_* envars。要在开始时更改权限,您可以覆盖 grafana dockerfile 或入口点,您需要 grafana 文件源代码并修改其入口点 @Yamuk 当我省略用户时,这是同样的问题,无论如何我找到了解决方案,问题来自我的卷,它是由 root 用户创建的,因此对 grafana 不可用。菜鸟犯了一点错误,所以我最后所做的就是 chown -R /path/to/volume 和 chmod -R 777 /path/to/volume。并删除 env 变量,因为它们与 grafana 设置有关。我会尽快发布答案。 【参考方案1】:

我是来结束这个话题的。

所以这是一个菜鸟错误,但我不知道。 问题来自 Grafana 不会 chown 和 chmod 卷文件夹这一事实。该错误不会发生,但它不会工作,因为它不保存数据。

解决方案是删除环境变量并更改包含该卷的本地“./grafana”文件夹的权限。

原来如此

chown -R <personal local user> /path/to/local/volume/folder && \
chmod -R 777 /path/to/local/volume/folder

现在它可以正常工作了 这是我的新 docker compose

   docker-compose.yml   
    grafana:
        image: grafana/grafana
        ports:
          - '3000:3000'
        volumes:
          - './grafana:/var/lib/grafana'
        networks:
          - db-to-grafana
        depends_on:
          - db
          - influxdb_cli

感谢各位四位的帮助!

【讨论】:

以上是关于Docker 上的 Grafana 7.3.0 存在权限问题的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus+Grafana监控系统配合Cadvisor监控Docker容器 #yyds干货盘点#

在容器上丢失 grafana 仪表板或 docker restart [Windows+docker+grafana]

性能测试 -- docker部署grafana

如何将 Grafana 的 Docker 容器连接到 MySql 的 Docker 容器?

zabbix+grafana docker搭建及绘图

Grafana 无法从 Docker 运行