我正试图在k8s中部署一个docker容器,该容器在/var/run
下创建自己的子目录,但该目录的任何子目录似乎都没有保留其权限。docker镜像以权限低于root的用户身份运行。我在k8s中运行这个,k8s的livenessCheck将在pod上执行并检查/var/run/myapp/somesubdir
下的文件(在精神上类似于/proc
和其他目录如何公开信息(。
在代码中,在应用程序启动时,以下文件由代码编写:/var/run/myapp/test
和/var/run/myapp/somesubdir/test-2
。在代码中,我看到在试图写入这些文件时出现拒绝权限的错误。
其中一个错误的示例:
threw exception; nested exception is java.nio.file.AccessDeniedException: /var/run/myapp/somesubdir/test-2
docker文件:
RUN adduser --system --disabled-password app-user &&
groupadd app &&
usermod -a -G app app-user &&
mkdir -p /var/run/myapp/somesubdir &&
chown -Rv app-user:app /var/run/myapp &&
chmod -Rv 664 /var/run/myapp
USER app-user
# ...
如果我执行吊舱,我会看到什么
app-user@mypod:/app$ stat /var/run/myapp/
File: /var/run/myapp/
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 10008fh/1048719d Inode: 12310926 Links: 3
Access: (0664/drw-rw-r--) Uid: ( 102/app-user) Gid: ( 1000/ app)
app-user@mypod:/app$ stat /var/run/myapp/somesubdir
stat: cannot stat '/var/run/myapp/somesubdir': Permission denied
chown和chmod的输出确认更改正在对所有子目录进行更改。这是预期的行为吗?这与它在/var/run下有关吗?
编辑
我试过切换到/tmp
,但也遇到了同样的问题。
chmod需要包含目录的执行权限