LoginSignup
1
1

More than 5 years have passed since last update.

Docker Remote APIでSwarmのServiceの情報を取ってくる

Last updated at Posted at 2016-08-31

*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 STATEtasksから取れるので、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]} runningshutdownacceptedの3種類から検索

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1