在docker中挂载的卷中权限被拒绝

3

我正在使用docker-compose在docker容器中挂载本地主机的卷(在docker-compose.yml中添加了入口)。

这个方法很好用,但是当我试图运行py.test时,我遇到了权限错误:

OSError: [Errno 13] Permission denied: '/foo/bar/.coverage'

而且,当我尝试在登录到容器后创建.coverage目录时,我会得到:

mkdir .coverage
mkdir: cannot create directory '.coverage': Permission denied

有没有解决这个问题的想法?

2
更改挂载点的权限,以便docker服务用户可以访问它。 - Rene M.
@ReneM. 只需要 chmod 或 chown 吗?我尝试添加写入权限,但没有起作用。 - user2091046
取决于实际的权限和所有权,以及您的Docker服务正在哪个用户下运行。 - Rene M.
这个问题应该真正包括docker-compose.yml文件中的卷挂载行,主机上的权限以及容器中的权限/目录内容(ls -al)。 - BMitch
此外,如果您启用了SELinux,请尝试暂时禁用它,看看是否解决了您的问题。 - Will Barnwell
3个回答

0

这可能是由于该目录上的文件上下文,尝试将其更改为“沙盒”文件:

chcon -Rt svirt_sandbox_file_t /foo/bar/

0
只要 Docker 本身具有正确的权限,您可以在 Docker 容器中执行任何操作(例如卷挂载)。您应该使用以下命令来执行容器:
docker exec -it -u 0 Container_NAME /bin/bash
然后执行 py.test,但希望您不要在 py.test 中使用 su - 切换到某个用户。

0

我遇到了同样的问题,并通过在我的Dockerfile中添加chmod -R 777来解决它(将777适应您的权限,但您需要读/写权限),应用于我的测试包的根文件夹(在您的情况下是foo/bar/)。我将其设置为递归,因为我也在子文件夹中运行测试覆盖。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接