Docker容器退出,没有任何消息

我试图在Docker容器中运行xinetd。

我的Docker文件是非常基本的:

# voip-monitor # # VERSION 0.0.1 FROM ubuntu:14.04 RUN apt-get update && apt-get install -y xinetd python EXPOSE 9090 CMD ["/usr/sbin/xinetd", "-d -dontfork"] 

当我开始我的容器:

 docker run -d -p 9090:9090 --name voip-monitor voip-monitor 

它启动,但在2秒后存在。

当我开始我的容器:

 docker run -d -p 9090:9090 --name voip-monitor voip-monitor /usr/sbin/xinetd -d -dontfork 

它按预期工作。 我在这里错过了什么?

你需要“-d”参数吗?

我试图根据您的图像启动一个容器,这里是我得到的:

 root@r2d2:/tmp/tmp# docker run -d -p 9090:9090 --name voip-monitor voip-monitor e482c8d486134749c6f2747c252eed96f628924c4158c05ca09ac487ff87db24 root@r2d2:/tmp/tmp# docker logs voip-monitor xinetd: msg_init failed: can't open log file 

检查源代码我认为这行可能是问题,可能与/ dev / tty访问有关。

删除“-d”参数解决了我的问题。

我认为问题在于-d-dontfork选项被放入上面Dockerfile的相同数组元素/string中:

 CMD ["/usr/sbin/xinetd", "-d -dontfork"] 

CMD指令更正为

 CMD ["/usr/sbin/xinetd", "-d", "-dontfork"] 

应该解决问题。

-d可能不需要,我们中的许多人都喜欢冗长的选项。 要模拟tty并使xinetd快乐,请尝试使用脚本命令。

 script -c "xinetd -d -dontfork" 

哪成为

 CMD ["script", "-c", "xinetd -d -dontfork"] or CMD script -c "xinet -d -dontfork" 

使用docker 1.13.0的debian:8镜像