首页 > 解决方案 > 无法列出 Docker 中嵌套目录的内容:权限被拒绝

问题描述

我发现我无法列出 Docker 容器中嵌套目录的内容。

文件结构:

├── Dockerfile
└── foo
    └── bar
        └── baz.txt

Dockerfile:

FROM debian

COPY foo /app/foo

WORKDIR /app

CMD ["ls", "foo/bar"]

我可以ls foo/bar/在主机上成功运行:

$ ls foo/bar/
baz.txt

但是当我运行容器时,我收到“权限被拒绝”错误。

$ docker build -t foo .

$ docker run foo
ls: cannot open directory 'foo/bar': Permission denied

我不明白为什么权限被拒绝,因为我是容器中的root用户,并且该目录似乎具有适当的权限:

$ docker run -it foo sh
# whoami
root
# cd foo
# ls -l
total 4
drwxrwxr-x. 2 root root 4096 Aug  3 19:13 bar

环境:

$ docker --version
Docker version 19.03.8, build afacb8b

主机:Fedora 32

标签: dockerpermissionsdockerfile

解决方案


评论中的解决方案:

这个问题是由 Fedora 默认启用的 SElinux 引起的。

编辑/etc/sysconfig/docker--selinux-enabledOPTIONS变量中删除。

重新启动 docker 守护进程。

$ sudo systemctl restart docker

运行容器。无需重建图像。

$ docker run foo
baz.txt

推荐阅读