是否可以显示正在运行的Docker容器的重启策略?

时间:2017-03-30 03:51:15

标签: docker

当我创建容器时,我指定了重新启动策略,但docker ps中没有显示,并且它也不会显示任何格式字符串。

有谁知道如何查看正在运行的容器的重启策略?

4 个答案:

答案 0 :(得分:28)

是的,可以使用docker inspect json格式,只需要查询它。

以下是正在运行的容器zen_easley的docker inspect的相关输出。请注意将容器名称更改为适合您的环境。

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

您只需运行以下命令即可获得相同的输出。

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

如果您看到RestartPolicy有两个属性Name, MaximumRetryCount否,0 分别是上述输出中的值

您也可以使用以下命令获取单个属性值,例如Name,将.Name附加到上述命令:

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

答案 1 :(得分:10)

您可以通过docker inspect获得此作品。

只是政策名称:

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

或整个政策(包括例如最大重试次数):

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

答案 2 :(得分:3)

我做了这个小脚本来检查所有容器及其策略:

#!/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

希望对某人有帮助!

答案 3 :(得分:1)

对于单行代码:

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