无法列出 Docker 中嵌套目录的内容:权限被拒绝

Cannot list contents of nested directory in Docker: Permission denied

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

文件结构:

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

Docker文件:

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

来自评论的解决方案:

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

编辑 /etc/sysconfig/docker 以从 OPTIONS 变量中删除 --selinux-enabled

重新启动 docker 守护程序。

$ sudo systemctl restart docker

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

$ docker run foo
baz.txt