Lesson 13 / 25
Restart Policies
Recover from crashes automatically.
no, on-failure, always, unless-stopped
The restart policy controls what Docker does when a container exits: no (default), on-failure (restart after a non-zero exit, optionally with a retry limit), always (always restart, including after the Docker daemon restarts) and unless-stopped (like always, but not if you stopped it deliberately). For long-running services on a server, unless-stopped is a common choice; for one-off jobs, leave it as no.
Choosing a restart policy
Match the policy to the workload.
policy restarts after crash after daemon restart typical use
no no no one-off tasks, migrations
on-failure[:N] yes (non-zero exit) yes workers that may crash
always yes yes critical services
unless-stopped yes yes, unless stopped services on a single serverWatch for crash loops
A service restarting every few seconds hides a real bug; check docker compose ps and logs for repeated restarts.
Quick check: Which policy suits a database migration job?
- always
- no (run once and exit)
- unless-stopped
- on-failure with infinite retries for a job that succeeds once
Answer
no (run once and exit) — Jobs should finish, not restart forever.