通过ssh

时间:2015-05-07 20:38:02

标签: mongodb ubuntu ssh docker containers

我在ubuntu 14.04上与openssh一起在docker容器上安装了mongodb。容器正在运行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

2 个答案:

答案 0 :(得分:5)

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

CMD usr/bin/mongod

当你运行你的容器时,mongod将是你的PID 1.现在,你可能想知道这一点"但是我的SSH服务器怎么样?"答案是:不要在docker容器上运行SSH服务器。 运行SSH服务器的一些用例,但几乎所有的"正常"原因(调试,C& C等)使用"最佳实践"在容器上获取​​shell:

docker exec -it myContainer /bin/bash

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

答案 1 :(得分:0)

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

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