docker-compose 打开存储失败:运行时权限被拒绝错误
Posted
技术标签:
【中文标题】docker-compose 打开存储失败:运行时权限被拒绝错误【英文标题】:docker-compose opening storage failed: permission denied error on running 【发布时间】:2019-11-11 13:27:24 【问题描述】:我正在尝试执行我的 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 问题和其他 *** 的问题,但不幸的是它们都没有帮助!
【问题讨论】:
我对 prometheus 和 grafana 一无所知,但是,对我来说,这看起来像是您的音量问题。您将 prometheus 图像的数量设置为 /prometheus。因此,您应该检查您的用户是否为该目录设置了权限。 【参考方案1】:如果您不需要从主机访问这些卷文件,请使用命名卷而不是主机挂载。 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
对于解决主机挂载权限问题的通用解决方案,可以使用我的docker-base 映像中的 fix-perms 脚本,以及入口点和容器启动方式的更改,以动态调整内部的用户 ID容器以匹配卷安装的容器。
【讨论】:
哇!我搜索了很多网站,但您的解决方案是最好的!非常感谢你 :) 【参考方案2】:我的docker-compose up
命令不断返回以下内容:
err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied"
问题是您本地计算机上的文件夹结构/文件具有不正确的文件权限,当启动 docker 容器时,它无法写入指定位置。
我通过使用以下命令递归地更改文件夹来解决此问题:
sudo chown -R nobody:nogroup <local path>
例如,我的 docker-compose.yml 中的卷部分如下所示:
volumes:
- /home/user/docker-volumes/prometheus:/prometheus
冒号表示分隔本地文件路径:docker容器文件路径。应用我之前的 chown 示例会得到以下结果:
sudo chown -R nobody:nogroup /home/user/docker-volumes/prometheus
我的docker-compose up
不再因权限被拒绝而失败!
【讨论】:
是的,它有很大帮助。感谢您的评论克里斯蒂安! :*以上是关于docker-compose 打开存储失败:运行时权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
docker-compose java 无法访问 jarfile
docker-compose up与docker-compose up -d