当从主机远程安装卷时,Mongodb将不会在Docker容器中启动

在Mac上,我正在从docker上运行mongodb,数据目录是从我的主机上的卷上挂载的,如下所示:

docker run -d -p 27017:27017 -v /Users/me/git/world/db:/var/lib/mongodb gzoller/world 

(/ var / lib / mongodb是mongoconfiguration文件中存储数据的地方。)

我想让我的数据保持在主机上,即使我杀了运行mongodb的容器。

使用这个运行命令tho,mongo不会在容器中启动。 容器中的mongo日志有这个剪辑:

 Mon Sep 14 18:27:59 [initandlisten] options: { command: [ "run" ], config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", journal: "true", logappend: "true", logpath: "/var/log/mongodb/mongodb.log", unixSocketPrefix: "/var/run/mongodb" } Mon Sep 14 18:27:59 [initandlisten] Assertion: 13651:Couldn't fsync directory '/var/lib/mongodb': errno:22 Invalid argument 

我已经chmod一个+ rwx db目录我正在安装的主机上。

到目前为止,我所学到的是(至less在Mac上)只有容器中的根可以写入主机上的卷,mongo创build自己的用户mongodb,我认为它不能写入我的mount卷。

如何让mongo在MacOS上写入已安装的主机卷?

看起来这不是权限问题。 如果查看源代码仓库( gzoller / world / go.sh ),你应该运行如下命令:

 docker run -d -p 80:80 -p 5672:5672 -p 15672:15672 -p 27017:27017 -p 28017:28017 -p 11211:11211 -v /Users/me/git/world/db:/var/lib/mongodb -e HOST_IP=`docker-machine ip default` gzoller/world 

让我知道结果。