我是容器和码头工的新手,所以请耐心等待。我试图让mongo在Synology NAS上运行,其中db文件存储在共享文件夹中(与创建的docker文件夹不同)。所有用户都具有完全读/写访问权限,但以下错误不断出现。
STORAGE [initandlisten] exception in initAndListen std ::exception:boost::filesystem::status: Permission denied: "/data/db/storage.bson", terminating
这就是我设置容器文件夹结构的方法。我认为问题是虚拟驱动器映射的结果,但我不确定。一如既往,任何帮助将不胜感激。
编辑:在下面添加/ share / data / db的权限。
答案 0 :(得分:4)
如果是与Synology有关的问题,请让我给出与Synology有关的答案。我决定在我的NAS上玩docker,并陷入同样的问题。 我不太喜欢向所有人授予权限,我找到了一种解决方案,该解决方案如何使Syngo NAS上的docker通过mongo工作。我为主机上的共享文件夹添加了所有者组的读/写权限记录。在我的情况下,该文件夹的名称为“ mongo1”(此文件夹映射到容器内的“ / data / db”路径)。
看来,mongo会在启动过程中触摸此目录并更改其所有者(UID更改为999)。该用户在主机上不存在,但是没关系。借助新设置的权限规则,启动过程可以继续。
我希望有一天能对某人有所帮助。干杯! :)
答案 1 :(得分:3)
为后代添加评论的答案......
此问题源于MongoDB进程内部作为没有主机权限的用户运行的Docker容器。最简单但可能最不安全的修复方法是使用每个人的读写权限标记主机卷(chmod 777
)。
查看此帖子了解更多详情及更多信息"正确"解决方案。 What is the (best) way to manage permissions for docker shared volumes