Docker 容器内的'/tmp'文件夹的权限从哪里继承?

Docker 容器内的'/tmp'文件夹的权限从哪里继承?

我有一个 PHP docker 容器启动失败,提示'session_start' don't have permissions on /tmp/xxxx file.

我发现“/tmp”文件夹的权限是'drwxr-xr-t'。当我将其更改为'drwxrwxrwt',容器正常工作。

我可能为了调试另一个不相关的问题而对主机系统做了一些错误操作。但我不记得我做了什么以及什么可能导致上述问题。

所以我想知道docker容器内的'/tmp'文件夹的权限从哪里继承?

提前致谢。 :)

答案1

您应该在 Dockerfile 中找到答案。

基础镜像已经具有那些错误的权限,或者 Dockerfile 在镜像构建期间做了一些错误的事情。

在这两种情况下,您都可以在 Dockerfile 中修复此问题,然后重建新的映像。

答案2

查看您使用的基础图像,/tmp权限设置正确:

$ docker run -it --rm php:5-apache ls -ald /tmp
drwxrwxrwt 1 root root 4096 Jan 23 00:10 /tmp

这意味着文件夹权限的修改发生在您这边,无论是在 Dockerfile 中的某个步骤中构建映像时,还是在您运行容器的方式中。如果没有 Dockerfile 或用于运行容器的命令的详细信息(包括 docker-compose.yml 文件(如果您使用)),我认为不可能给出更详细的答案。

答案3

如果镜像没有问题,下一步要检查的是绑定和卷挂载,因为它们可能会把事情搞糟。还值得检查任何入口点脚本,以防它们做任何愚蠢的事情。

相关内容