Edited at

docker run hoge && tail -f hoge.logでゾンビコンテナになる


概要

dockerコンテナを永続化する方法としてRUNコマンドにhoge & tail -f hoge.logのようにしているならば要注意です!

場合によってはゾンビコンテナになります!

なぜそうなるのかというと、メインプロセス(フォアグラウンドプロセスでも)が異常終了してもtailコマンドが正常である限り、そのまま稼働し続けるからです!

restart policyが定義されていても期待した動作にならないでしょう!


検証方法

例として、RUNコマンドでhoge && tail -f hoge.logが定義されているとする。

hogeプロセスをkillしてみてください!

tail -f hoge.log だけを実行するゾンビコンテナの出来上がりです!


対策法

監視システムが導入されているならば、メインプロセスの状態を監視して異常時に自動起動するような仕組みを導入する。

他にいい方法があればご教授ください!