gpt4 book ai didi

mongodb - 通过ssh启动时Docker容器mongod错误

转载 作者:可可西里 更新时间:2023-11-01 09:12:21 24 4
gpt4 key购买 nike

我已经在 docker 容器上安装了 mongodb,并在 ubuntu 14.04 上安装了 openssh。容器正在使用 ssh 运行,但是当我通过 ssh 进入容器时,在尝试启动 mongod 时出现以下错误。

root@430f9502ba2d:~# 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 也没有任何影响。

也试过看这个Mongo daemon doesn't run by service mongod start没有它的帮助。

mongod --config/your/path/to/mongod.conf 似乎也不起作用,只是锁定了。

下面的错误是标准错误,因为当然没有运行 mongod 服务器。

root@430f9502ba2d:/# mongo
MongoDB shell version: 2.6.9
connecting to: test
2015-05-07T20:49:56.213+0000 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-05-07T20:49:56.214+0000 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed

最佳答案

这里的问题是你的方法。 Docker 没有您在传统系统上习惯的初始化系统。 docker 所做的是用您在 CMD 中指定的进程替换 PID 1或 ENTRYPOINT Dockerfile 命令。现在,请忽略 ENTRYPOINT,因为它会替换您的 CMD 运行时使用的内容(通常是 /bin/sh -c)。您需要使用 CMD 命令指示 docker 在您的 Dockerfile 中启动您的 mongod 服务,例如:

CMD usr/bin/mongod

当您运行容器时,mongod 将成为您的 PID 1。现在,您可能想知道“但是我的 SSH 服务器呢?”答案是:不要在你的 docker 容器上运行 SSH 服务器。有一些用例可以运行 SSH 服务器,但几乎所有“正常”原因(调试、C&C 等)都被“最佳实践”取消了容器:

docker exec -it myContainer/bin/bash

这会将您带入正在运行的容器的外壳中。此处关于管理 docker 容器中的配置和更改的建议是使用 Ansible 之类的东西。但是,请记住 docker 容器是短暂的,您不应该重新启动服务并更改它们的配置状态。如果您需要更改配置,请更改 Dockerfile 或配置数据,然后启动一个新容器。祝你好运! Here是关于 Dockerizing MongoDB 的更多信息,但请记住,那里描述的方法改变了 Dockerfile 中的 ENTRYPOINT,这涉及更多,需要更好地了解 Dockerfiles 中发生的事情。

关于mongodb - 通过ssh启动时Docker容器mongod错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com