dja*_*son 5 docker docker-compose
我正在尝试在容器中使用 Docker HEALTHCHECK。我在版本 3 docker-compose 文件中进行设置,该文件也支持healthcheck:
version: '3'
services:
api:
[...]
healthcheck:
test: test ! -e /unhealthy
interval: 10s
timeout: 1s
retries: 1
Run Code Online (Sandbox Code Playgroud)
在我能找到的每个地方,包括在 stackoverflow 上,检查容器健康状况的方法是使用docker inspect并查看State.Health,但不存在这样的条目:
$ docker inspect --format='{{json .State}}' api
Template parsing error: template: :1:7: executing "" at <.State>: map has no entry for key "State"
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了很长一段时间,但看不到这些信息移动到哪里或任何其他检查健康状态的方法。
版本信息:
$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac219
$ docker --version
Docker version 17.09.0-ce, build afdb6d4
Run Code Online (Sandbox Code Playgroud)
服务名称api是一个组合结构。Docker 无法将名称映射api到容器。我怀疑你有一个名为另一个对象api是docker inspect被仰视。
组合容器通常命名为{{parent_directory}}_{{service}}_{{n}}. 要查找名称,请使用:
docker-compose ps
docker ps -a --filter name=SERVICE_NAME
Run Code Online (Sandbox Code Playgroud)
然后您可以在该名称上使用检查
docker inspect --format='{{json .State}}' CONTAINER_ID_OR_NAME
Run Code Online (Sandbox Code Playgroud)
或专门检查容器以避免非容器对象:
docker container inspect --format='{{json .State}}' CONTAINER_ID_OR_NAME
Run Code Online (Sandbox Code Playgroud)
所有容器都应该有.State对象。只有定义了健康检查的容器才会有.State.Health数据。
| 归档时间: |
|
| 查看次数: |
6006 次 |
| 最近记录: |