从主机

时间:2015-09-14 18:21:16

标签: 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是mongo配置文件所说的存储数据的地方。)

即使我杀了运行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 a + rwx我正在安装的主机上的db目录。

我认为到目前为止我学到的是(至少在Mac上)只有容器中的根可以写入主机上的卷而mongo创建自己的用户mongodb,我认为这个用户不能写到我的装载量。

如何在MacOS上将mongo写入已装载的主机卷?

1 个答案:

答案 0 :(得分:1)

看起来不是权限问题。如果查看原始存储库(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

让我知道结果。