簡體   English   中英

Mongo守護程序不是由服務mongod啟動運行的

[英]Mongo daemon doesn't run by service mongod start

最近我通過閱讀本頁( http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ )安裝了mongodb軟件包。 我使用docker和ubuntu 14.04映像來部署我的服務器。

問題始於首先運行mongod服務:

# service mongod start

我得到以下內容:

Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongod restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mongod ; start mongod. The restart(8) utility is also available.

我試過這個:

# start mongod

但沒有輸出。

接下來我想查看日志,但沒有日志!

ls /var/log/mongodb -a #empty

好的,接下來我嘗試啟動mongo shell:

# mongo
2014-08-12T17:42:44.431+0000 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2014-08-12T17:42:44.432+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

好吧,谷歌搜索后我檢查(applaied)來自linux服務器https://wiki.archlinux.org/index.php/MongoDB (部分故障排除 )的Mongodb的所有答案,但仍然一無所獲。

mongo shell只有在我直接在后台運行mongod時才能工作:

mongod --verbose &

[DataFileSync] BackgroundJob starting: DataFileSync
shardKeyTest passed
isInRangeTest passed
shardObjTest passed
[initandlisten] MongoDB starting : pid=451 port=27017 dbpath=/data/db 64-bit host=a9d816faea4c
[initandlisten] db version v2.6.4
[initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
[initandlisten] build info: Linux build7.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
[initandlisten] allocator: tcmalloc
[initandlisten] options: { systemLog: { verbosity: 1 } }
[initandlisten] flushing directory /data/db
[initandlisten] journal dir=/data/db/journal
[initandlisten] recover : no journal files present, no recovery needed
[initandlisten] flushing directory /data/db/journal
[initandlisten] flushing directory /data/db/journal
[initandlisten] opening db:  local
[initandlisten] enter repairDatabases (to check pdfile version #)
[initandlisten]     local
[initandlisten] done repairDatabases
[initandlisten] opening db:  admin
[initandlisten] query admin.system.roles planSummary: EOF ntoreturn:0 ntoskip:0 keyUpdates:0 numYields:0 locks(micros) W:119 r:106 nreturned:0 reslen:20 0ms
[ClientCursorMonitor] BackgroundJob starting: ClientCursorMonitor
[PeriodicTaskRunner] BackgroundJob starting: PeriodicTaskRunner
[TTLMonitor] BackgroundJob starting: TTLMonitor
[initandlisten] fd limit hard:1048576 soft:524288 max conn: 419430
[IndexRebuilder] BackgroundJob starting: IndexRebuilder
[IndexRebuilder] opening db:  local
[initandlisten] create collection local.startup_log { size: 10485760, capped: true }
[initandlisten] command local.$cmd command: create { create: "startup_log", size: 10485760, capped: true } ntoreturn:1 keyUpdates:0 numYields:0  reslen:75 0ms
[initandlisten] insert local.startup_log ninserted:1 keyUpdates:0 numYields:0  0ms
[initandlisten] waiting for connections on port 27017
[IndexRebuilder] checking complete2014-08-12T17:48:29.837+0000 [DataFileSync] BackgroundJob starting: DataFileSync

現在我有以下內容:

/var/lib/mongodb (mongodb:mongodb) empty
/var/log/mongodb (mongodb:nogroup) empty
/data/db (mongo:nogroup) #useless

# mongod.conf
dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongod.log
logappend=true
port = 27017
bind_ip = 0.0.0.0
...

這里發生了什么? 我完全糊塗了(

Docker容器通常沒有完整的init系統,並且與upstart的交互在docker容器中不起作用。 (從理論上說這是可能的,但它會破壞輕量堆疊的目的)

這意味着你啟動一個docker容器,它會運行一個命令“/ usr / bin / mongod”

在docker容器中運行mongodb的示例: https//docs.docker.com/samples/library/mongo/

此外,由於您使用交互式docker容器運行安裝命令,因此只要考慮docker,shell解釋器就是單個命令。 進入交互式會話后,您可以在后台運行mongod(正如您所做的那樣)並啟動mongo客戶端會話。

另一種方法是將這些指令作為Dockerfile的一部分運行。 你可以參考mongodb的例子

您可能還想考慮已經在docker hub中發布的一些官方mongo db映像:

https://registry.hub.docker.com/_/mongo/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM