根据https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-tasks,过滤器只能用于获取具有特定服务名称的正在运行的容器。由于某种原因,我得到了所有任务的完整列表,无论其名称或所需状态如何。我找不到任何使用带有 Docker API 的 JSON 请求的正确示例。我正在使用以下命令:
A)
curl -X GET -H "Content-Type: application/json" -d '{"filters":[{ "service":"demo", "desired-state":"running" }]}' https://HOSTNAME:2376/tasks --cert ~/.docker/cert.pem --key ~/.docker/key.pem --cacert ~/.docker/ca.pem
Run Code Online (Sandbox Code Playgroud)
返回所有内容
B) 试图从Docker Remote API Filter Exited中获取一些工作
curl https://HOSTNAME:2376/containers/json?all=1&filters={%22status%22:[%22exited%22]} --cert ~/.docker/cert.pem --key ~/.docker/key.pem --cacert ~/.docker/ca.pem
Run Code Online (Sandbox Code Playgroud)
这个返回“curl:(60)无法识别对等方的证书颁发者。”,所以我猜测curl请求格式错误。
我在 Docker 论坛上询问过,他们提供了一些帮助。我很惊讶互联网上没有任何关于如何将 Docker API 与curl 一起使用的正确文档,或者它是如此明显而我不明白什么?