docker - 无法列出 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
解决方案
评论中的解决方案:
这个问题是由 Fedora 默认启用的 SElinux 引起的。
编辑/etc/sysconfig/docker
以--selinux-enabled
从OPTIONS
变量中删除。
重新启动 docker 守护进程。
$ sudo systemctl restart docker
运行容器。无需重建图像。
$ docker run foo
baz.txt
推荐阅读
- python - Pyodbc:如何在 sql 语句中使用动态数量的占位符
- powerbi - 定期导入邮件附件
- r - 创建 nxn 矩阵
- delphi - 列表
其中 T 是一条记录 - javascript - 基于另一个字符串/数组Javascript从1个字符串/数组中删除值
- oracle - 使用 Postgres DDL 创建的表是否会转换为 Liquibase 中的其他 DB DDL?
- c - 如何在C中制作动态结构
- performance-testing - 无法将新计算机添加到 gatling 数据库页面
- python - 将 dictionary_tree 转换为元组列表
- r - 当数据没有按性别分开时,如何单独检查性别分布?