Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 在/etc/prometheus/prometheus.yml上拒绝许可;无法部署prom/prometheus_Docker_Ansible_Prometheus_Nfs - Fatal编程技术网

Docker 在/etc/prometheus/prometheus.yml上拒绝许可;无法部署prom/prometheus

Docker 在/etc/prometheus/prometheus.yml上拒绝许可;无法部署prom/prometheus,docker,ansible,prometheus,nfs,Docker,Ansible,Prometheus,Nfs,我使用NFS挂载通过Ansible将/etc/prometheus/prometheus.yml(默认)配置文件提供给prom/prometheus docker映像。部署容器时,我在容器日志中看到以下错误,几秒钟后容器重新启动 level=error ts=2020-10-28T16:01:04.432Z caller=main.go:290 msg=“错误加载配置(-config.file=/etc/prometheus/prometheus.yml)”err=“打开/etc/prometh

我使用NFS挂载通过Ansible将
/etc/prometheus/prometheus.yml
(默认)配置文件提供给prom/prometheus docker映像。部署容器时,我在容器日志中看到以下错误,几秒钟后容器重新启动

level=error ts=2020-10-28T16:01:04.432Z caller=main.go:290 msg=“错误加载配置(-config.file=/etc/prometheus/prometheus.yml)”err=“打开/etc/prometheus/prometheus.yml:权限被拒绝”

我可以在docker主机(Raspberry Pi 4)上浏览挂载的文件系统,触摸文件并以启动容器的用户身份读取
prometheus.yml

下面是我的playbook中的相关任务,在没有playbook的情况下从CLI部署容器时,问题是相同的,远程文件系统装载到at
/mnt/prometheus
,并作为卷传递到容器at
/etc/prometheus

docker run-p 9090:9090-v/mnt/prometheus:/etc/prometheus prom/prometheus

prometheus/tasks/main.yml
been:yes
在调用此角色的剧本中设置)

您知道什么会导致或如何解决容器的
权限被拒绝
问题吗


更新:我通过与容器共享docker主机上的目录进行测试。这已成功共享。指向一个NFS问题,但我正在努力解决这个问题。

我也遇到了类似的问题,虽然不是NFS问题,而是挂载一个简单的目录问题。对我来说,这个问题的答案修正了它:

显然,普罗米修斯·多克正在使用用户
nobody
,将文件夹权限设置为
nogroup
为我工作:

chgrp -R nogroup /mnt/prometheus
所以在你的Ansible剧本中:

- name: fix permissions for prometheus mnt folder
  file:
    path: '/mnt/prometheus'
    group: nogroup
    recurse: yes
  become: yes

在我的特定案例中,我发现问题在于NFS挤压的功能。我的NFS导出器(一个较旧的Synology NAS)不允许我完全禁用挤压。如果有,@nehtor.t的回答可能会有所帮助。相反,我不得不在NFS GUI中使用“将所有用户映射到管理员”设置,这允许连接在NFS共享上具有适当权限的连接到相应的
chown

您可以在主机上发布
ls-l/mnt/prometheus
的输出吗?您正在设置
user:995:1002
,因此您是否已经使用
chown 995:1002…
设置了正确的权限?jehan@cluster1:~$ls-l/mnt/prometheus/total 8-rwxrwxrwx 1 nobody root 681 Oct 26 20:28 prometheus.yml d--------3 nobody root 4096 Oct 25 04:25'#循环安装后我还没有设置烫发,只需将perms设置为playbook中的设置。尝试使用docker run-p 9090:9090-v/mnt/prometheus:/etc/prometheus:Z prom/prometheusTry使用Z或Z安装它,因为在某些时候卷上有不同的容器标签。@Ashok同一问题。阅读Z/Z标志,我认为它们不适用于这个操作系统。相信他们只适用于selinux。谢谢你的跟进,你的帖子会帮助我的。在我的例子中,这是NFS挤压的一个功能。我的NFS服务器(Synology NAS)不允许我禁用挤压,所以我将所有用户挤压到管理员。
- name: fix permissions for prometheus mnt folder
  file:
    path: '/mnt/prometheus'
    group: nogroup
    recurse: yes
  become: yes