概要
dockerのコンテナは指定したコマンドがPID 1
で起動されており、使い方によってはシグナルハンドリングできないことがありますよ、という話です。
それによってプロセスをGracefulに終了できなかったりリソースリークが起きたりするので注意する必要があります。
環境
- docker v18.09.0
どんな問題が起きる?
こちらでとてもわかり易く説明されてます。
Dockerケースを要約すると、親、子、孫の3プロセスが起動している状態で
ケース | 何が起きる | 問題点 |
---|---|---|
親が死ぬ | 子も孫も強制的に死ぬ | 処理中リクエストを ハンドリングできない |
子が死ぬ | 孫は親に紐付けられるが、 親はそれを知らないので孫はゾンビになる |
リソースリーク |
という問題が起きます。
親、子だけのケースであれば前者が起きます。