在 Synology NAS 上通过 docker 启动 mongo

Posted

技术标签:

【中文标题】在 Synology NAS 上通过 docker 启动 mongo【英文标题】:Starting mongo through docker on a Synology NAS 【发布时间】:2016-02-13 01:20:08 【问题描述】:

我是容器和 docker 新手,请耐心等待。我试图让 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 的权限。

【问题讨论】:

您可能遇到了 UID 问题,因为 mongo 没有以 DSM 知道的用户身份运行,您能否显示您为 /share/data/db 配置的权限? @KevinBurdett 谢谢凯文 - 我在该文件夹中添加了“所有人”的读/写功能,现在它正在工作。拥有广泛的许可方案似乎并不理想。你知道 DSM 使用什么用户来运行 docker 吗? 没问题,问题不在于用户 DSM 使用的是什么用户,而是 mongo 服务在容器内部使用的用户。我不熟悉那个容器,所以我不能说。最终,容器是一个虚拟机并且有自己的用户。这些用户通常不会映射到主机上的有效用户。如果服务以root 运行,我认为 Docker 会处理这个问题(或者可能是因为 root 总是具有相同的 UID?)。看看这个帖子,很详细:***.com/questions/23544282/… 【参考方案1】:

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

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

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

截图:

【讨论】:

【参考方案2】:

为后代添加评论中的答案...

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

查看这篇文章了解更多详情和更多“正确”的解决方案。 What is the (best) way to manage permissions for docker shared volumes

【讨论】:

以上是关于在 Synology NAS 上通过 docker 启动 mongo的主要内容,如果未能解决你的问题,请参考以下文章

在 Synology NAS 上安装 Nextcloud 时连接被拒绝错误

群晖NAS教程第五节:如何备份 Synology NAS

如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?

Synology NAS搭建NFS服务

Synology NAS 存储系统多路径连接Vmware ESXi 6.5

群晖synology外网访问怎么设置