web-dev-qa-db-ja.com

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

期待どおりに動作します。ここで何が欠けていますか?

2
Jeroen Moors

「-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

ソースコードをチェックするこれは line が問題である可能性があり、おそらく/ dev/ttyアクセスに関連していると思います。

「-d」パラメータを削除すると、問題が解決しました。

1
denaitre

問題は-dおよび-dontforkオプションは、上記のDockerfileの同じ配列要素/文字列に配置されます。

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

CMD命令をに修正する

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

問題を解決する必要があります。

2
VolkerM

一方、-dはおそらく必要ありません、私たちの多くは詳細なオプションが大好きです。 ttyをエミュレートしてxinetdを満足させるには、scriptコマンドを使用してみてください。

script -c "xinetd -d -dontfork"

どちらになる

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

Docker 1.13.0を使用してdebian:8イメージで動作します

0
Andy