O contêiner Docker sai sem nenhuma mensagem

2

Estou tentando executar o xinetd em um contêiner do Docker.

Meu arquivo do Docker é muito básico:

# 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"]

Quando inicio meu contêiner com:

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

Começa, mas existe depois de 2 segundos.

Quando inicio meu contêiner com:

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

Funciona como esperado. O que estou perdendo aqui?

    
por Jeroen Moors 22.01.2015 / 11:33

3 respostas

1

Você precisa do parâmetro "-d"?

Eu tentei lançar um contêiner com base na sua imagem e eis o que recebi:

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

Verificando o código-fonte, acho que essa linha pode ser a problema, provavelmente relacionado ao acesso / dev / tty.

Remover o parâmetro "-d" resolveu o problema para mim.

    
por 22.01.2015 / 18:18
2

Acho que o problema é que as opções -d e -dontfork são colocadas no mesmo elemento / string da matriz no Dockerfile acima:

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

Corrigindo a instrução CMD para

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

deve resolver o problema.

    
por 10.04.2015 / 13:39
0

Embora o -d não seja necessário, muitos de nós adoram a opção detalhada. Para emular um tty e deixar o xinetd feliz, tente usar o comando de script.

script -c "xinetd -d -dontfork"

Que se torna

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

Funciona com a imagem debian: 8 usando o docker 1.13.0

    
por 04.03.2017 / 03:44