繁体   English   中英

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

[英]Docker container mongod error when starting via ssh

我在ubuntu 14.04上与openssh一起在docker容器上安装了mongodb。 容器正在运行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守护进程没有服务mongod启动没有它帮助。

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所做的是 PID 1 替换为您在CMDENTRYPOINT Dockerfile命令中指定的进程。 现在,忽略ENTRYPOINT ,因为它取代了运行CMD东西(通常是/bin/sh -c )。 您需要指示docker使用CMD命令在Dockerfile中启动您的mongod服务,如:

CMD usr/bin/mongod

当你运行你的容器时,mongod将是你的PID 1.现在,你可能想知道“但是我的SSH服务器怎么样?” 答案是:不要在docker容器上运行SSH服务器。 还有一些使用情况下运行的SSH服务器是好的,但几乎所有的“正常”的原因(调试,C&C等)与“最佳做法”让你的容器上的壳无效:

docker exec -it myContainer /bin/bash

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

这真的很有帮助。 我试图通过创建几个空容器让旧的Ansible playbooks与Docker一起工作,让Ansible完成其余的工作。

它通过命令mongod --dbpath /var/lib/mongodb --smallfiles

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM