尝试从docker run命令将卷安装到我的容器。
似乎该文件夹始终是作为根用户而不是容器用户创建的。这样一来,我就没有该文件夹的权限(无法创建或写入用于记录的文件)。

使用此命令进行一些测试:docker run -it --entrypoint /bin/bash -v $PWD/logs:/home/jboss/myhub/logs:rw myImage:latest
如果我现在执行命令:ls -ld /logs我得到结果:drwxr-xr-x 2 root root 4096 Jun 12 13:01 logs/
在这里我们可以看到只有所有者才具有写权限。根是所有者。
我希望(我希望)jboss是此文件夹的所有者。或至少所有用户都具有:rw参数中的-v选项的读/写权限

我在这里不明白什么?我怎样才能像我想要的那样工作?

最佳答案

当前,这是一个经常且成问题的问题,没有一个适合所有人的答案。

我听说过两种常见的方法。

首先使您可以chown目录,然后将其与容器内的应用程序一起使用。

RUN mkdir -p /home/jboss/myhub/logs ; chown -R jboss:jboss /home/jboss/myhub/logs
USER jboss

如果需要使用其他用户从主机系统访问文件,则可以用jboss用户chmod应用程序在容器内创建的文件。
$ chmod -R +rw /home/jboss/myhub/logs

使用第二种方法,您可以尝试在实例化应用程序之前先在chmod或主机系统中使用适当的Dockerfile创建文件。
$ touch /home/jboss/myhub/logs/app-log.txt
$ touch /home/jboss/myhub/logs/error-log.txt
$ chmod 766 /home/jboss/myhub/logs/app-log.txt
$ chmod 766 /home/jboss/myhub/logs/error-log.txt

当然,还有更多方法可以实现这一目标,但是我还没有听说过任何其他“本地”解决方案。我想找出一种更简单/更实用的方法。

10-05 20:41
查看更多