无法列出 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
我发现无法列出 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