首页 > 解决方案 > 如何在 docker 内部确定文件所有者 - docker restart 后无法删除粘性目录中的文件

问题描述

我在 OpenShift 4.x 平台上的 docker 中运行了一些应用程序。此应用程序与其他一些应用程序在一个 pod 中运行,因此重新启动它不会导致 pod 重新启动 - 只有这个 docker 被重新启动。

我的应用程序已将/dev/shmdir 作为内存卷安装。该目录设置了粘性位。根据链接的手册页,这对文件删除有以下限制:

只有当用户具有目录的写权限并且用户是文件的所有者、目录的所有者或超级用户时,用户才能删除或重命名粘性目录中的文件。

我的应用程序配置为使用指定的用户 ID 运行(它在 OpenShift pod 部署文件中设置),所以在 docker restart 后它仍然使用相同的 UID。应用未重启时,可以/dev/shm不受限制地修改和删除其中的文件。但是由于某种原因,重新启动后应用程序无法修改或删除重新启动之前创建的文件,即使 UID 相同。为什么它不能更改和删除它们?

我的应用程序在使用 RedHat 7.x 映像作为基础的 docker 中运行。OpenShift 4.x 安装在 CoreOS 系统上。

标签: linuxdockerkubernetesopenshift

解决方案


推荐阅读