docker挂载的主机目录文件权限

我以docker形象运行mqtt经纪商Mosqitto。 我正在使用以下参数

sudo docker run -d -p 1883:1883 -p 1884:1884 -v /home/mosquitto/apps/dev/mosquitto:/mosquitto --restart always -u mosquitto eclipse-mosquitto:1.4. 

这应该将主文件夹/ home / mosquitto / apps / dev / mosquitto挂载到映像文件夹/ mosquitto问题是主机用户标识(1001)和泊坞窗用户标识(100)不匹配。

如果我没有指定-u mosquitto,则应用程序会抱怨无法写入/mosquitto/logs/mosquitto.log

所以我想我会指定-u mosquitto,使图像中的应用程序以用户1001的身份运行,因此对已挂载的文件具有写访问权限。 哪些工作。 但之后,Mosquitto应用程序在退出时创build了一个新的数据库文件。 该文件是作为所有者的101用户。

当我将-U指定给docker时究竟发生了什么。 怎么做了我所期待的(允许写入主机文件),并没有做我期待的东西(仍然使用原始图像用户ID文件)

也许这是与这个特定的docker形象有关..它运行一些脚本内部切换用户?

如何为任何用户写访问日志path? 这可能不太安全。 但是,如果只是日志,让我们看看Docker里面的应用程序可以写入它。

或者考虑引导一些命令到容器内部进行权限更改。

如果您使用Linux或OSX作为您的Docker位置,很有可能是安全或文件权限问题。 转到这个错误报告权限被拒绝对由Dockerfile添加命令#1295自动创build的目录并跳转到最后…有几个链接到子错误报告,您可能最有可能find您的解决scheme。 我有一个非常相似的问题,原来是一个selinuxconfiguration错误。