*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種類から検索 |