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

Kar*_*son 4 ssh ubuntu containers mongodb docker

我在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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

L0j*_*j1k 5

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

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了Dockerfile中的内容,这更加复杂,需要更好地了解Dockerfiles中发生的事情.