[英]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 替换为您在CMD
或ENTRYPOINT
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.