状況
本番の compose で、app コンテナが落ちたら終了コードに関係なく再起動させたい。ただし保守のために手動で止めたときは、サーバー(Docker デーモン)を再起動しても止めたままにしたい。
空欄に入るものは?
services: app: image: registry.example.com/app:1.4.0 restart: ____正答
- always
- on-failure
- "no"
- unless-stopped
解説
unless-stopped は、落ちたコンテナを終了コードに関係なく再起動し、手動で止めたコンテナはデーモンが再起動しても止めたままにする。always も落ちたら再起動するが、手動で止めたコンテナもデーモンの再起動時に起動してしまうので、保守中に勝手に動き出す。on-failure は 0 以外の終了コードのときだけ再起動するので、正常終了で落ちた場合は戻らない。"no" は自動で再起動しない(YAML では no が真偽値に読まれるので引用符で囲む)。
参考: docs.docker.com
この問題を含む Docker のテストを制限時間つきで解く
Dockerクイズへ