config.v2.json中的docker healthcheck

时间:2016-10-30 05:00:42

标签: docker containers

docker ps --quiet | xargs docker inspect --format '{{ .Id }}: Health={{ .State.Health.Status }}'
c1ab47fdc94858275e9327ce56d039010cb9db1eb7865e0917f3d8a74862367e: Health=unhealthy
**Template parsing error: template: :1:27: executing "" at <.State.Health.Status>: map has no entry for key "Health"**

我只想知道为什么在map has no entry for key "Health命令之后报告错误docker inspect。状态应该在容器的config.v2.json文件中,但是,在该文件中,unhealthy下没有Status,所以我想知道它在哪里&#34;健康=不健康&#34;来自。

感谢。

1 个答案:

答案 0 :(得分:0)

命令docker inspect的输出,它将json显示为响应。

如果您注意到响应,则没有任何名为Health的内容。因此,错误。但是,State -> Status的值为running。因此,只需使用.State.Status代替.State.Health.Status

"State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 23570,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2016-10-30T07:06:14.114090476Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },

由于您想要查看状态,请使用下面显示所需输出的命令:

sudo docker ps --quiet | xargs sudo docker inspect --format '{{ .Id }}:Health={{ .State.Status }}' 
5db8668eb121bd67b6fdeba12269fa7f194c48140b5d547c70befe70b2c3f607:Health=running

为另一个未再运行的容器显示不同的Status值,如下所示:

$ sudo docker inspect --format '{{ .Id }}:Health={{ .State.Status }}' 060d98f7838e
060d98f7838ec901fd7d3c855254af0d15702d2758d61f6754af8899bee9613a:Health=exited

希望这有用。