*docker_remote_api_v1.24を前提にしています。
Docker Remote APIのservices/だと、DESIRED STATEの様な取れない情報がある。
$ docker service ps SERVICE_NAME
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR
CONTAINER_ID CONTAINER_NAME IMAGE:TAG NODE Running Running about a minute ago
DESIRED STATEはtasksから取れるので、SERVICE_NAMEで検索して取得する。
$ curl "http://YOUR_DOCKER_REMOTE_API.ENDPOINT/tasks?filters=\{%22service%22:\[%22SERVICE_NAME%22\]\}"
| jq ".[].DesiredState"
SERVICE_NAMEを検索したいサービス名に検索すれば動くはず。
filtersクエリは基本的にJSONをurlエンコードして渡さないとダメなので要注意。
その他の検索方法
同じ要領でこういう引き方もできる様子(未検証)
| QUERY | DESCRIPTION |
|---|---|
| filters={%22id%22:[%22TASK_ID%22]} | タスクのIDで検索 |
| filters={%22name%22:[%22TASK_NAME%22]} | タスクの名前で検索 |
| filters={%22service%22:[%22SERVICE_NAME%22]} | Swarmのサービス名で検索 |
| filters={%22node%22:[%22NODE_ID%22]} | node IDで検索 |
| filters={%22label%22:[%22LABEL_NAME%22]} | Label名で検索(key=value形式でも検索できるらしい) |
| filters={%22desired-state%22:[%22DESIRED_STATE%22]} |
running``shutdown``acceptedの3種類から検索 |
参考