2016-01-12 53 views
1

我爲ddclient製作了一個(docker)容器。Ubuntu在前臺運行服務

問題是我在前臺運行該服務時遇到問題,因此docker容器仍在運行。

我已經設法通過在script的末尾添加bash來保持docker的正常運行,但這樣做很冒險,因爲實際的過程應該是ddclient。

我發現的另一種方式是登錄文件tail -f,但如果服務停止,容器將繼續運行而不是停止。

問:那麼是否有任何(簡單)的方法來保持服​​務在前臺運行?

回答

0

在容器中運行的進程(任何進程)的問題是信號管理:您需要確保將SIGKILL和其他信號正確傳達給正確的進程以成功停止/移除容器(而不是留下殭屍進程:詳見「PID 1 zombie reaping issue‘)

一種選擇是至少讓你的服務至少寫在日誌文件中

ENTRYPOINT ["/bin/sh" "-c" ] 
CMD yourProcess > log 

這應該保持它的前景,如建議’ How do I bring a daemon process to foreground?「。

對於服務,請嘗試使用作爲基礎圖像phusion/baseimage-docker,它適當地管理其他服務。

+0

我開始的過程作爲Ubuntu服務,像'服務ddclient開始'所以,這沒有任何輸出 – mloureiro

+0

@mloureiro我已經eidted答案 – VonC

+0

謝謝@VonC,但我已經在使用該圖像..讀完所有內容後,實際看看* my_init *腳本。我不明白這應該如何幫助我。而關於守護進程'mydaemon>/var/log/mydaemonlogfile',如果我這樣做'service ddclient start>/var/log/ddclient.log'這有什麼用? – mloureiro