Docker4 択難易度 標準

状況

本番の compose で、app コンテナが落ちたら終了コードに関係なく再起動させたい。ただし保守のために手動で止めたときは、サーバー(Docker デーモン)を再起動しても止めたままにしたい。

空欄に入るものは?

services:  app:    image: registry.example.com/app:1.4.0    restart: ____

正答

  1. always
  2. on-failure
  3. "no"
  4. unless-stopped

解説

unless-stopped は、落ちたコンテナを終了コードに関係なく再起動し、手動で止めたコンテナはデーモンが再起動しても止めたままにする。always も落ちたら再起動するが、手動で止めたコンテナもデーモンの再起動時に起動してしまうので、保守中に勝手に動き出す。on-failure は 0 以外の終了コードのときだけ再起動するので、正常終了で落ちた場合は戻らない。"no" は自動で再起動しない(YAML では no が真偽値に読まれるので引用符で囲む)。

参考: docs.docker.com

composerestart-policy

この問題を含む Docker のテストを制限時間つきで解く

Dockerクイズへ