【问题标题】:Mongodb won't start in Docker container when remote-mounting a volume from host从主机远程挂载卷时,Mongodb 不会在 Docker 容器中启动
【发布时间】:2015-09-15 10:34:49
【问题描述】:

在 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 的容器,我也希望我的数据保留在主机上。

使用这个运行命令,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 上)只有容器中的 root 可以写入主机上的卷,而 mongo 创建自己的用户 mongodb,我认为它不能写入到我安装的卷。

如何让 mongo 写入 MacOS 上已挂载的主机卷?

【问题讨论】:

  • 我假设你使用 OSX 和 boot2docker?
  • OSX 与 Docker 机器
  • 您在此期间找到解决方案了吗?我有同样的问题

标签: mongodb docker


【解决方案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

让我知道结果。

【讨论】:

猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 2017-06-19
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多