我试图在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镜像