過去問ドリル

LinuCレベル2 コンテナ 問13

コンテナ/Dockerコンテナとコンテナイメージの管理

稼働中のコンテナwebの負荷を一時的に止めたいが、プロセスを終了させずメモリ上の状態も保ったまま、後から同じ状態で再開したい。適切な操作はどれか。

当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)

正解:B

解説

docker pauseは、cgroupsのfreezerの仕組みを使ってコンテナ内の全プロセスを凍結します。プロセスは終了せず、シグナルも送られないため、docker unpauseで凍結を解くとメモリ上の状態を保ったまま処理を再開します。docker stopはプロセスへSIGTERM(猶予後にSIGKILL)を送って終了させるため、再開時にはプロセスが最初から起動し直します。凍結中の状態はdocker psでPausedと表示されます。

選択肢ごとの解説

  • A誤り。docker stopはプロセスを終了させるため、restartしてもメモリ上の状態は失われ、プロセスは起動し直します。
  • B正しい。pauseはプロセスを終了させずに凍結し、unpauseで同じ状態から再開します。
  • C誤り。commitはファイルシステムの変更をイメージにするもので、プロセスやメモリの状態は保存されません。
  • D誤り。rmはコンテナを削除するため、プロセスの状態も書き込み層の変更も失われます。
LinuCレベル2の問題を演習モードで解く