2015-01-20 45 views
7

我想在Docker中啓動一個系統,它有很多init和upstart服務,並且我得到這個錯誤。在一個容器中運行服務(upstart/init.d)

initctl: Unable to connect to Upstart: 
Failed to connect to socket /com/ubuntu/upstart: Connection refused 

所有變通辦法建議將/ bin/true的硬鏈接設置爲使沉默錯誤消失。但我需要這些服務由新貴管理,以重新啓動能力和新貴排出事件工作...

因爲它似乎碼頭不支持這一點,我正在考慮編寫劇本啓動/etc/rcX.d中的所有服務並跟蹤PID。這並不能解決暴發事件不足的問題。

任何其他的想法如何在docker中啓動新興的進程?

+1

泊塢窗的理念是運行過程中,如果你想運行幾個,看看上司https://docs.docker.com/articles/using_supervisord/ – user2915097 2015-01-20 21:57:07

+0

主管似乎大多是等價的,如果不是子集,新貴,但感謝指針;它可能不得不這樣做。鑑於init腳本的大型遺留系統,將它們轉換並不適合將它們作爲單獨的docker運行。 – 2015-01-20 22:22:23

回答

3

你一定能夠做到這一點。這實際上不是「Docker Way」的方式,但它很可能。您可能需要考慮簡單地使用phusion/baseimage基本映像,它支持內置runit。如果您寧願使用upstart,只需看看它們是如何實現入口點/sbin/myinit的,然後即可。

11

不幸的是,新貴不能在碼頭集裝箱內工作,因爲它們對init系統有一定的魔力。

issue解釋:

如果應用程序使用的新貴,這不會合身裸泊塢窗的圖像,即使他們轉移/ sbin目錄/ init或 /sbin目錄/ initctl的喜歡的東西/箱以上/ true或/ dev/null。 如果此應用程序具有舊系統V initscript並且initctl命令未被轉移,則可以使用服務啓動。

在salt-minion的情況下,在ubuntu上,包裝使用upstart 作業,沒有經典的init腳本,所以這兩種情況都不會以 開頭。

而且this one說:

由於碼頭工人替換它自己默認的/ sbin目錄/初始化,有 沒有辦法運行泊塢窗容器內初始化的新貴。

相關問題