2016-01-12 52 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