一个 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 搬回家后,容器中的权限被拒绝

docker 和 elastic beanstalk 容器意外停止并且权限被拒绝

尝试从 docker 容器访问共享内存时出现“权限被拒绝”,即使 --ipc 设置为“主机”

SSH 权限被拒绝(公钥、密码) - 容器 docker ubuntu 18.04

使用 docker 客户端在 python 中设置新容器时权限被拒绝错误

在 docker-compose 期间尝试访问容器中的文件时权限被拒绝(UBUNTU 20.04)