2

我正在使用 boot2docker 在 OSX 中运行 docker 容器。这是一个最新的 Ubuntu 镜像,使用官方方式从 package 安装了 mongo mongodb-org

我可以完美地从命令行运行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 中找到的所有内容,但没有运气。

同时,我尝试使用安装 MySQLapt-get并且可以完美地将其作为服务运行。

我还尝试从mongodb旧版本的 Ubuntu 软件包安装 Mongo。将它作为服务运行也没有问题。

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

感谢任何帮助。

4

2 回答 2

0

由于 Upstart (/sbin/init) 不是机器上启动的第一个进程,因此 Docker Ubuntu 映像上与 init 相关的命令被忽略/不起作用。

一般来说,任何使用 Upstart 初始化的服务都不会在 Docker 容器中正常运行,除非你使用 /sbin/init 启动容器(你可能必须使用 ubuntu-upstart 映像,并对其进行大量调整。 )

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

于 2014-12-09T18:01:44.873 回答
0

为什么不让 Dockerimage 运行 mongod 而不是 init/shell/etc?“每个容器一个进程”,对吗?

使用 Dockerfile 创建映像,并将 CMD 设置为: CMD ["/usr/bin/mongod", "-f", "/etc/mongod.conf"]

于 2018-05-11T00:49:13.153 回答