linux – Mongo守护进程不是由服务mongod启动运行的

前端之家收集整理的这篇文章主要介绍了linux – Mongo守护进程不是由服务mongod启动运行的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最近我通过阅读本页( http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/)安装了mongodb软件包.
我使用docker和ubuntu 14.04映像来部署我的服务器.

问题始于首先运行mongod服务:

  1. # service mongod start

我得到以下内容

  1. Rather than invoking init scripts through /etc/init.d,use the service(8)
  2. utility,e.g. service mongod restart
  3.  
  4. Since the script you are attempting to invoke has been converted to an
  5. 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.

我试过这个:

  1. # start mongod

但没有输出.

接下来我想查看日志,但没有日志!

  1. ls /var/log/mongodb -a #empty

好的,接下来我尝试启动mongo shell:

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

好吧,谷歌搜索后我检查(applaied)从Mongodb in linux serverhttps://wiki.archlinux.org/index.php/MongoDB(部分故障排除)的所有答案,但仍然没有得到任何结果.

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

  1. mongod --verbose &
  2.  
  3. [DataFileSync] BackgroundJob starting: DataFileSync
  4. shardKeyTest passed
  5. isInRangeTest passed
  6. shardObjTest passed
  7. [initandlisten] MongoDB starting : pid=451 port=27017 dbpath=/data/db 64-bit host=a9d816faea4c
  8. [initandlisten] db version v2.6.4
  9. [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
  10. [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
  11. [initandlisten] allocator: tcmalloc
  12. [initandlisten] options: { systemLog: { verbosity: 1 } }
  13. [initandlisten] flushing directory /data/db
  14. [initandlisten] journal dir=/data/db/journal
  15. [initandlisten] recover : no journal files present,no recovery needed
  16. [initandlisten] flushing directory /data/db/journal
  17. [initandlisten] flushing directory /data/db/journal
  18. [initandlisten] opening db: local
  19. [initandlisten] enter repairDatabases (to check pdfile version #)
  20. [initandlisten] local
  21. [initandlisten] done repairDatabases
  22. [initandlisten] opening db: admin
  23. [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
  24. [ClientCursorMonitor] BackgroundJob starting: ClientCursorMonitor
  25. [PeriodicTaskRunner] BackgroundJob starting: PeriodicTaskRunner
  26. [TTLMonitor] BackgroundJob starting: TTLMonitor
  27. [initandlisten] fd limit hard:1048576 soft:524288 max conn: 419430
  28. [IndexRebuilder] BackgroundJob starting: IndexRebuilder
  29. [IndexRebuilder] opening db: local
  30. [initandlisten] create collection local.startup_log { size: 10485760,capped: true }
  31. [initandlisten] command local.$cmd command: create { create: "startup_log",size: 10485760,capped: true } ntoreturn:1 keyUpdates:0 numYields:0 reslen:75 0ms
  32. [initandlisten] insert local.startup_log ninserted:1 keyUpdates:0 numYields:0 0ms
  33. [initandlisten] waiting for connections on port 27017
  34. [IndexRebuilder] checking complete2014-08-12T17:48:29.837+0000 [DataFileSync] BackgroundJob starting: DataFileSync

现在我有以下内容

  1. /var/lib/mongodb (mongodb:mongodb) empty
  2. /var/log/mongodb (mongodb:nogroup) empty
  3. /data/db (mongo:nogroup) #useless
  4.  
  5. # mongod.conf
  6. dbpath=/var/lib/mongodb
  7. logpath=/var/log/mongodb/mongod.log
  8. logappend=true
  9. port = 27017
  10. bind_ip = 0.0.0.0
  11. ...

这里发生了什么?我很困惑(

解决方法

Docker容器通常没有完整的init系统,并且与upstart的交互在docker容器中不起作用. (从理论上说这是可能的,但它会破坏轻量堆叠的目的)

这意味着你启动一个docker容器,它会运行一个命令“/usr/bin/mongod”

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

此外,由于您使用交互式docker容器运行安装命令,因此只要考虑docker,shell解释器就是单个命令.进入交互式会话后,您可以在后台运行mongod(正如您所做的那样)并启动mongo客户端会话.

另一种方法是将这些说明作为Dockerfile的一部分运行.您可以参考mongodb example.

您可能还想考虑已经在docker hub中发布的一些官方mongo db映像:

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

猜你在找的Linux相关文章