DockerHub から image のタグ一覧を取得する

Docker Hub の image から tag を探そうと思ったときに、数が多いと中々目当てのものが見つからなかったりする。

API で取得するスクリプトを組んでる人がいたが、API のバージョンが古かったり、タグがたくさんあるとページングされたりするので、自分で書き直してみる。

#!/usr/bin/env bash

function docker-taglist() {
  local image=${1}

  local response=$(curl --silent --show-error "https://registry.hub.docker.com/v2/repositories/${image}/tags/")
  local names=$(echo ${response} | jq -r .results[].name)

  echo -e "${names}"

  # 最大 5 ページまで取得する
  local page=1
  local next=$(echo ${response} | jq -r .next)
  while [[ ${page} -lt 5 && ${next} != "null" ]]
  do
    response=$(curl --silent --show-error "${next}")
    names="${names}\n$(echo ${response} | jq -r .results[].name)"

    echo -e "${names}"

    page=$((${page}+1))
    next=$(echo ${response} | jq -r .next)
  done
}

エイリアスに登録しておけば、こんな感じで使える。

$ docker-taglist library/mysql
5.5
5.5.62
5.6
5.6.43
...

ページ数は引数で受け取れるようにするといいかもしれない。

参考

DockerHubのイメージのタグ一覧をコマンドで取得する | Mazn.net