LinuCレベル2 コンテナ 問11
コンテナ/Dockerコンテナとコンテナイメージの管理docker stopとdocker killの動作の違いとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)
- Astopはコンテナを一時停止して再開できる状態にし、killはコンテナを停止した上で削除する
- Bstopはコンテナのプロセスを直ちに終了させ、killは既定で10秒待ってから終了させる
- Cstopは実行中のコンテナにだけ使え、killは停止済みのコンテナの後片付けにだけ使える
- DstopはSIGTERMの後に猶予を置いてSIGKILLを送り、killは既定でSIGKILLを送る
正解:D
解説
docker stopは、コンテナのメインプロセスにSIGTERM(イメージでSTOPSIGNALが指定されていればそのシグナル)を送り、猶予時間(既定は10秒)内に終了しなければSIGKILLを送って強制終了させます。アプリケーションに後始末をする機会を与える、行儀のよい停止方法です。docker killは既定でSIGKILLを送って直ちに終了させ、-sオプションで送るシグナルを変えることもできます。一時停止して後から再開したい場合はdocker pause/unpause、コンテナの削除はdocker rmを使います。
選択肢ごとの解説
- A誤り。一時停止して再開できる状態にするのはdocker pauseです。また、killはコンテナを削除しません。
- B誤り。説明が逆です。猶予時間を待つのはstopで、killは既定でSIGKILLを送り直ちに終了させます。
- C誤り。どちらも実行中のコンテナを停止させるコマンドで、停止済みのコンテナの削除にはdocker rmを使います。
- D正しい。stopはSIGTERMを送って猶予時間後にSIGKILLを送り、killは既定でSIGKILLを直ちに送ります。