在 Synology NAS 上从 mongo 到 docker

Starting mongo through docker on a Synology NAS

我是容器和 docker 的新手,所以请多多包涵。我正在尝试在 Synology NAS 上启动 mongo 和 运行,其中数据库文件存储在共享文件夹中(与创建的 docker 文件夹不同)。所有用户都具有完全 read/write 访问权限,但不断出现以下错误。

STORAGE [initandlisten] exception in initAndListen std ::exception:boost::filesystem::status: Permission denied: "/data/db/storage.bson", terminating

这就是我设置容器文件夹结构的方式。我认为问题是虚拟驱动器映射的结果,但我不确定。一如既往,任何帮助将不胜感激。

编辑:在下面添加 /share/data/db 的权限。

正在为 posterity 添加来自评论的答案...

此问题源于 MongoDB 进程 中 Docker 容器 运行 作为对主机没有权限的用户机器。最简单但可能最不安全的修复方法是为每个人标记主机卷的读写权限 (chmod 777)。

查看此 post 了解更多详细信息和更多 "proper" 解决方案。 What is the (best) way to manage permissions for docker shared volumes

如果是Synology相关的问题,我给一个Synology相关的回答。我决定在我的 NAS 上玩 docker 并陷入同样的​​问题。 我真的不喜欢为每个人授予权限,我找到了一个解决方案如何通过 docker 在 Synology NAS 上使 mongo 工作。对于主机上的共享文件夹,我为 Owner 组添加了 Read/Write 权限记录。在我的例子中,文件夹的名称是 "mongo1"(这个被映射到容器内的“/data/db”路径)。

看来,mongo 在启动期间接触了这个目录并更改了它的所有者(UID 更改为 999)。该用户在主机上不存在,但无论如何都没有关系。由于新设置的权限规则,启动过程可以继续。

我希望有一天它能对某人有所帮助。干杯! :)

截图: