2014-10-07 123 views
1

我正在OSX中使用boot2docker運行docker容器。這是一個最新的Ubuntu鏡像,使用官方包裝mongodb-org安裝了mongo。無法在Docker容器中運行Mongo DB deamon

我可以從命令行完美運行mongod,但無法將其作爲服務運行。

當我試圖做sudo 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不具有任何輸出。我嘗試了我在Google中找到的所有內容,但沒有運氣。

同時,我試圖安裝MySQL使用apt-get,我可以完美地運行它作爲一項服務。

此外,我試圖從Ubuntu的mongodb包安裝Mongo,這是一個較舊的版本。運行它作爲服務也沒有問題。

我懷疑/etc/init.d/mongod腳本有問題,但不知道具體是什麼。

申請任何幫助。

+0

你能發佈你的Dockerfile嗎? – 2014-10-07 19:43:35

+0

您可能想與[我爲MongoDB大學的M202課程創建的Docker鏡像]進行比較(https://registry.hub.docker.com/u/mwmahlberg/m202docker/)。通常,在Docker容器中使用服務是一個糟糕的主意。我用[supervisord](http://supervisord.org)獲得了很好的結果。 – 2014-10-07 20:07:30

+0

@ChrisMcKinnel我在容器中直接安裝mongo。不是來自Dockerfile。 – burdiyan 2014-10-08 09:06:44

回答

0

由於Upstart(/ sbin/init)不是在機器上啓動的第一個進程,因此Docker Ubuntu映像上與init相關的命令已被取消/無法運行。

一般來說,任何使用Upstart初始化的服務都將無法在Docker容器中正常運行,除非您使用/ sbin/init啓動容器(您可能必須使用ubuntu-upstart映像並進行一些調整)

如果您確實需要這樣做,請爲mongo編寫一個傳統的init腳本並使用update-rc.d插入它。然後,用/ sbin/service啓動它應該可以工作。