2014-10-07 125 views
1

我正在OSX中使用boot2docker运行docker容器。这是一个最新的Ubuntu镜像,使用官方包装mongodb-org安装了mongo。无法在Docker容器中运行Mongo DB deamon

我可以从命令行完美运行mongod,但无法将其作为服务运行。

当我试图做sudo service mongod start返回

Rather than invoking init scripts through /etc/init.d, use the service(8) 
utility, e.g. service mongod start 

Since the script you are attempting to invoke has been converted to an 
Upstart job, you may also use the start(8) utility, e.g. start mongod 

我试图做start mongod不具有任何输出。我尝试了我在Google中找到的所有内容,但没有运气。

同时,我试图安装MySQL使用apt-get,我可以完美地运行它作为一项服务。

此外,我试图从Ubuntu的mongodb包安装Mongo,这是一个较旧的版本。运行它作为服务也没有问题。

我怀疑/etc/init.d/mongod脚本有问题,但不知道具体是什么。

申请任何帮助。

+0

你能发布你的Dockerfile吗? – 2014-10-07 19:43:35

+0

您可能想与[我为MongoDB大学的M202课程创建的Docker镜像]进行比较(https://registry.hub.docker.com/u/mwmahlberg/m202docker/)。通常,在Docker容器中使用服务是一个糟糕的主意。我用[supervisord](http://supervisord.org)获得了很好的结果。 – 2014-10-07 20:07:30

+0

@ChrisMcKinnel我在容器中直接安装mongo。不是来自Dockerfile。 – burdiyan 2014-10-08 09:06:44

回答

0

由于Upstart(/ sbin/init)不是在机器上启动的第一个进程,因此Docker Ubuntu映像上与init相关的命令已被取消/无法运行。

一般来说,任何使用Upstart初始化的服务都将无法在Docker容器中正常运行,除非您使用/ sbin/init启动容器(您可能必须使用ubuntu-upstart映像并进行一些调整)

如果您确实需要这样做,请为mongo编写一个传统的init脚本并使用update-rc.d插入它。然后,用/ sbin/service启动它应该可以工作。