linux - 如何在 docker 内部确定文件所有者 - docker restart 后无法删除粘性目录中的文件
问题描述
我在 OpenShift 4.x 平台上的 docker 中运行了一些应用程序。此应用程序与其他一些应用程序在一个 pod 中运行,因此重新启动它不会导致 pod 重新启动 - 只有这个 docker 被重新启动。
我的应用程序已将/dev/shm
dir 作为内存卷安装。该目录设置了粘性位。根据链接的手册页,这对文件删除有以下限制:
只有当用户具有目录的写权限并且用户是文件的所有者、目录的所有者或超级用户时,用户才能删除或重命名粘性目录中的文件。
我的应用程序配置为使用指定的用户 ID 运行(它在 OpenShift pod 部署文件中设置),所以在 docker restart 后它仍然使用相同的 UID。应用未重启时,可以/dev/shm
不受限制地修改和删除其中的文件。但是由于某种原因,重新启动后应用程序无法修改或删除重新启动之前创建的文件,即使 UID 相同。为什么它不能更改和删除它们?
我的应用程序在使用 RedHat 7.x 映像作为基础的 docker 中运行。OpenShift 4.x 安装在 CoreOS 系统上。
解决方案
推荐阅读
- android - 如何在kotlin的另一个函数中调用带有参数的函数
- django - 为什么表单在提交表单时在 django 中给出字段错误时具有外键
- javascript - 尝试从电子应用程序 devtools 复制 css 时显示为空
- image - 带有 TAG 的 Docker 映像
- reactjs - React:如何在任何导航上运行功能?
- python - 在Python中计算一列每一行的汉字个数
- python - Python 在错误的用户文件夹中搜索
- java - Collectors.reducing 方法在用作 Collectors.partitionBy 的下游时更新相同的标识
- python - mod_wsgi (pid=145, process='dc_ui', application=''): 加载 WSGI 脚本 '/app/data_cube_ui/wsgi.py'
- flutter - 颤振:错误:找不到方法:'createClient'