Is it possible to show the restart policy of a running Docker container?

Docker

Docker Problem Overview


When I create containers I'm specifying a restart policy, but this is not shown in docker ps, and it doesn't appear any format string shows this either.

Does anyone know how to see the restart policy of a running container(s)?

Docker Solutions


Solution 1 - Docker

Yes, it is possible using docker inspect which is json format and just need to query it.

Here is relevant output of docker inspect for a running container zen_easley. Note to change container name as suitable for your environment.

  • docker inspect zen_easley

"HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": true,

You can just run the following command to get the same and its output.

$ docker inspect -f "{{ .HostConfig.RestartPolicy }}"  zen_easley
{no 0}

If you see RestartPolicy has two properties Name, MaximumRetryCount and no, 0 are the values respectively in the above output

You may also get the individual property value, say Name by using below command, appending .Name to the above command:

docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}"  zen_easley
no

Solution 2 - Docker

You can get this via docker inspect.

Just the policy name:

docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' <container-id>

Or the entire policy (including e.g. max retry count):

docker inspect --format '{{json .HostConfig.RestartPolicy}}' <container-id>

Solution 3 - Docker

I did this little script to check all the containers and their policy:

#!/usr/bin/env bash
#Script to check the restart policy of the containers

readarray -t CONTAINERS < <(docker ps -a | grep -v NAMES | awk '{print $NF}')

for item in "${CONTAINERS[@]}"; do

	#Hard-Bash way
	#data=$(docker inspect "${item}" | grep -A 1 RestartPolicy | awk -F '"' '{print $4}' | tail -n 1)
	
	#Docker-pr0 way
	data=$(docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" "${item}")
	
	echo "Container: ${item} / RestartPolicy: ${data}"
done

Hope it helps to somebody!

Solution 4 - Docker

For single line of the code:

docker ps|grep -v CON|awk '{print $1}'|while read line; do  docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" $line |xargs echo $line ;done

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSteveView Question on Stackoverflow
Solution 1 - DockerRaoView Answer on Stackoverflow
Solution 2 - DockerDan LoweView Answer on Stackoverflow
Solution 3 - DockerOscarAkaElvisView Answer on Stackoverflow
Solution 4 - DockerMete BilginView Answer on Stackoverflow