Я пытаюсь запустить xinetd в контейнере Docker.
Мой файл 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
и -dontfork
параметры помещаются в тот же элемент / строку массива в Dockerfile
выше:
CMD ["/usr/sbin/xinetd", "-d -dontfork"]
Исправление CMD
инструкция для
CMD ["/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
возможно, не нужен, многим из нас нравится подробный вариант. Чтобы подражать tty и порадовать xinetd, попробуйте использовать команду сценария.
script -c "xinetd -d -dontfork"
Что становится
CMD ["script", "-c", "xinetd -d -dontfork"]
or
CMD script -c "xinet -d -dontfork"
Работает с образом debian: 8 с использованием docker 1.13.0