簡體   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