Docker provides restart to control whether your containers start automatically when they exit, or when Docker restarts. Restart policies ensure that linked containers are started in the correct order.
Restart policies are different from the --live-restore
flag of the dockerd
command. Using --live-restore
allows you to keep your containers running during a Docker upgrade, though networking and user input are interrupted.
Use a restart policy
To configure the restart policy for a container, use the --restart
flag when using the docker run
command. The value of the --restart
flag can be any of the following:
Flag | Description |
---|---|
no | Do not automatically restart the container. (default) |
on-failure[:max-retries] | Restart the container if it exits due to an error, which manifests as a non-zero exit code. Optionally, limit the number of times the Docker daemon attempts to restart the container using the :max-retries option. |
always | Always restart the container if it stops. If it is manually stopped, it is restarted only when Docker daemon restarts or the container itself is manually restarted. |
unless-stopped | Similar to always , except that when the container is stopped (manually or otherwise), it is not restarted even after Docker daemon restarts. |
Restart policy details
Keep the following in mind when using restart policies:
- A restart policy only takes effect after a container starts successfully. In this case, starting successfully means that the container is up for at least 10 seconds and Docker has started monitoring it. This prevents a container which does not start at all from going into a restart loop.
- If you manually stop a container, its restart policy is ignored until the Docker daemon restarts or the container is manually restarted. This is another attempt to prevent a restart loop.
- Restart policies only apply to containers. Restart policies for swarm services are configured differently.