Question

How to Start Docker Containers Automatically After a Reboot?

Posted December 23, 2019 3.7k views
Linux BasicsDockerLinux Commands

Recently one of my servers crashed and after the reboot, none of my Docker containers started.

So I had to manually check each container and start the ones that were required.

That is when I realized that I should implement a restart policy to control whether a container starts automatically or not.

Here’s what I had to do:

1 comment
  • Hi Bobbyiliev,

    After reboot my node, I wanted to restart my containers in a specific order.
    I have 3 containers, I want restart in a order one by one.
    Can you help me how to do this ?

    Regards,
    Sujanya

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

In order to enable a restart policy, you need to use the --restart argument when executing docker run.

In my case what I decided to do is to use the --restart flag with the unless-stopped argument, that way my containers would be restarted in case that they crash or even after a reboot. Here’s an example of the command that I had to use:

docker run -dit --restart unless-stopped httpd

As an example I also started another container without specifying the unless-stopped argument:

docker run -dit httpd

After that, I rebooted the host to test if this was working and sure enough the container that I started with the unless-stopped argument started after the reboot and the second one did not:

docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED              STATUS                          PORTS               NAMES
ab9025e61abb        httpd               "httpd-foreground"   About a minute ago   Up 26 seconds                   80/tcp              container1
4d801fec7c0c        httpd               "httpd-foreground"   About a minute ago   Exited (0) About a minute ago                       container2

If you had an already running container that you wanted to change the restart policy for, you could use the docker update command to change that:

docker update --restart unless-stopped container_id

Then if you run a docker inspect for your container and look for RestartPolicy you should be able to see something like this:

    "RestartPolicy": {
        "Name": "unless-stopped",

There are a few other flags that you could specify to the --restart argument.

Argument Description
no This is the default value, it means that the containers would not be restarted
on-failure This would restart the container in case that there is an error and the container crashes
always Always restart the container if it stops
unless-stopped The container would always be restarted unless it was manually stopped

For more information you could take a look at the official documentation here:

https://docs.docker.com/config/containers/start-containers-automatically/

Here’s a quick video demo on how to do that:

Hope that this helps!
Regards,
Bobby

Submit an Answer