docker compose打开存储失败:运行时出现权限被拒绝错误

docker compose打开存储失败:运行时出现权限被拒绝错误,docker,docker-compose,grafana,prometheus,Docker,Docker Compose,Grafana,Prometheus,我正在尝试执行我的docker compose.yml文件,该文件包含prometheus和grafana配置 这是我的docker compose.yml文件: version: '2' services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - /prometheus:/prometheus command: - --config

我正在尝试执行我的
docker compose.yml
文件,该文件包含prometheus和grafana配置

这是我的
docker compose.yml
文件:

version: '2'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - /prometheus:/prometheus
    command: 
      - --config.file=/etc/prometheus/prometheus.yml 


  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - /var/lib/grafana:/var/lib/grafana
每当我输入
docker-compose-f docker-compose.yml up
命令来运行它时,我都会遇到以下关于权限的错误:

prometheus_1  | level=error ts=2019-06-30T16:14:42.690Z caller=main.go:723 err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied" 
prometheus_1  | level=error ts=2019-06-30T16:26:11.897Z caller=main.go:723 err="opening storage failed: mkdir data/: permission denied"

我不知道如何解决这个问题,我已经搜索了github问题和其他stackoverflow的问题,但不幸的是,它们都没有帮助

如果不需要从主机访问这些卷文件,请使用命名卷而不是主机装载。Docker将初始化命名卷的内容,包括权限和所有权,避免出现如下权限问题:

version: '2'

volumes:
  prometheus:
  grafana:

services:
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - prometheus:/prometheus
    command: 
      - --config.file=/etc/prometheus/prometheus.yml 

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana:/var/lib/grafana
volumes:
  - /home/user/docker-volumes/prometheus:/prometheus


对于解决主机装载权限问题的通用解决方案,可以使用“我的映像”中的fix perms脚本,以及入口点和容器启动方式的更改,动态调整容器内的用户ID以匹配卷装载的用户ID。

My
docker compose up
命令持续返回以下信息:

err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied"
sudo chown -R nobody:nogroup /home/user/docker-volumes/prometheus
问题是本地计算机上的文件夹结构/文件具有不正确的文件权限,当docker容器启动时,它无法写入指定位置

我通过使用以下命令递归浏览文件夹来修复此问题:

sudo chown -R nobody:nogroup <local path>
冒号表示本地文件路径:docker容器文件路径的分隔。应用我前面的chown示例,结果如下:

err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied"
sudo chown -R nobody:nogroup /home/user/docker-volumes/prometheus

My
docker compose up
不再因权限被拒绝而失败

我对普罗米修斯和格拉法纳一无所知,但对我来说,你的音量似乎有问题。将普罗米修斯图像的体积设置为/prometheus。所以你应该检查你的用户是否有权限设置该目录。哇!我已经搜索了这么多网站,但你的解决方案是最好的!非常非常感谢男人:)是的,这很有帮助。谢谢你的评论,克里斯蒂安!:*