一个 docker 容器的权限被拒绝
Posted
技术标签:
【中文标题】一个 docker 容器的权限被拒绝【英文标题】:Permission denied on one docker container 【发布时间】:2022-01-12 03:39:17 【问题描述】:我是 docker 新手,我正在使用 Loki 和 Grafana 构建一个简单的仪表板应用程序。
我正在尝试更改 Grafana 容器中的 Grafana 设置文件,但是它显示“权限被拒绝”。我在多个位置的容器中尝试了mkdir test
,它们都被拒绝,所以我知道这是一个权限问题。对于我的整个存储库,我有 4 个单独的容器。所有其他容器都不会被拒绝,只有 Grafana 容器。此外,我的旧 Ubuntu VM 已损坏,但旧 VM 也没有被拒绝权限,所以我不确定为什么是新的。
我试过跑步:
sudo chmod -R a+rwx repo
为所有内容提供权限。我通过右键检查所有卷权限,它们都是所有者,组和其他人的“创建和删除文件”。
在 docker 容器上,我运行了权限检查并得到:
但是,其他容器具有类似的权限。
我还在容器上运行了id
。对于没有权限的容器,我得到:
对于那个不起作用的。
那些工作的人回来了
完整的 docker-compose 代码可以在这里找到:
version: "3"
networks:
bypass:
services:
loki:
image: grafana/loki:2.4.0
volumes:
- ./admin/config:/mnt/config
- ./data/loki:/mnt/loki
ports:
- "3100:3100"
command: -config.file=/mnt/config/loki-config.yaml
restart: unless-stopped
networks:
- bypass
promtail:
image: grafana/promtail:2.4.0
volumes:
- ./data/raw:/mnt/raw
- ./data/log:/mnt/log
- ./admin/config:/mnt/config
command: -config.file=/mnt/config/promtail-config.yaml
restart: unless-stopped
networks:
- bypass
bypass:
image: bypass:latest
ports:
- "8080:8080"
volumes:
- ./data/raw:/mnt/raw
- ./data/log:/mnt/log
- ./admin/config:/mnt/config
- ./data/template:/mnt/template
networks:
- bypass
grafana:
image: grafana/grafana:8.2.5
user: "1000"
volumes:
- ./data/grafana:/var/lib/grafana
- ./data/log:/var/lib/temp_data
restart: unless-stopped
ports:
- "3000:3000"
networks:
- bypass
【问题讨论】:
分享你的 docker-compose.yaml 的内容 【参考方案1】:问题出在用户之下。我尝试指定
user: "1000"
在 grafana docker-compose 中,因为在我的本地机器上运行 id 时,它说用户和组的 UID 都是 1000。尽管如此,我不得不将用户更改为
user: "0"
复制我在其他服务的容器上看到的内容,并且成功了!
【讨论】:
以上是关于一个 docker 容器的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
docker 和 elastic beanstalk 容器意外停止并且权限被拒绝
尝试从 docker 容器访问共享内存时出现“权限被拒绝”,即使 --ipc 设置为“主机”
SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04