Docker Registry APIでタグ情報を取得

表題の通り。以前、下記エントリで解決できなかった内容の解決策(?)。

コンテナイメージのタグ一覧(未解決)

■ 環境

  • Docker 1.11.1

■ 参照

[ docker ] タグ情報も調べたい

上記を参照して試してみた。対象は自身の作成したApache ZooKeeperのコンテナである。

$ curl -s https://registry.hub.docker.com/v1/repositories/withsin/zookeeper/tags | jq .
[
  {
    "layer": "3db34bba",
    "name": "latest"
  },
  {
    "layer": "9cbde483",
    "name": "3.4.8"
  },
  {
    "layer": "9b796aa3",
    "name": "3.4.8-alpine"
  }
]
$

なるほど。確かに取得できた。

■ 疑問

APIのversionは今はv2ではないのか?

Docker Registry HTTP API V2 Introduction

これを参考にして再度実行してみると下記。

$ curl -s https://registry.hub.docker.com/v2/withsin/zookeeper/tags/list
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Name":"withsin/zookeeper","Action":"pull"}]}]}
$

エラーとなる。認証が必要のようだ。認証ってどうやるんだ?

試しにいろいろ試していたら下記のようなURLでも取得できた。

$ curl -s https://registry.hub.docker.com/v2/repositories/withsin/zookeeper/tags/ | jq .
{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "name": "3.4.8-alpine",
      "full_size": 65498971,
      "id": 2859484,
      "repository": 470025,
      "creator": 455341,
      "last_updater": 455341,
      "last_updated": "2016-05-02T07:50:56.859302Z",
      "image_id": null,
      "v2": true,
      "platforms": []
    },
    {
      "name": "latest",
      "full_size": 65498971,
      "id": 1671235,
      "repository": 470025,
      "creator": 455341,
      "last_updater": 455341,
      "last_updated": "2016-05-02T07:46:50.361527Z",
      "image_id": null,
      "v2": true,
      "platforms": []
    },
    {
      "name": "3.4.8",
      "full_size": 193747525,
      "id": 2075073,
      "repository": 470025,
      "creator": 455341,
      "last_updater": 455341,
      "last_updated": "2016-02-22T12:38:00.988370Z",
      "image_id": null,
      "v2": true,
      "platforms": []
    }
  ]
}
$

より多くの情報が取得できた。

とりあえずはこれで代用ができそうである。

以上。

■ 関連