動かざることバグの如し

近づきたいよ 君の理想に

ターミナルからDockerイメージのタグを検索するシェルスクリプト作った

やりたいこと

  • 公式のDocker Hubで指定したタグを検索するのがダルい
    • UIがクソ
    • そもそもターミナルで完結したい
  • タグ一覧を取得するAPIがあるからそれを使ってシェルスクリプトを作成したい

picture 0

成果物

ChatGPT様々

function search_docker_image_tag() {
  if [ -z "$1" ]; then
    echo "Usage: search_docker_image_tag <image name>"
    return 1
  fi
  IMAGE_NAME="$1"
  # Check if image name contains /
  if [[ $IMAGE_NAME != */* ]]; then
    IMAGE_NAME="library/$IMAGE_NAME"
  fi
  # Create a temporary file to store the tags
  TMP_FILE=$(mktemp)
  # Loop through the first two pages and append the tags to the file
  for PAGE in {1..2}; do
    echo "fetching page${PAGE}"
    curl -sL "https://registry.hub.docker.com/v2/repositories/${IMAGE_NAME}/tags?page=${PAGE}&page_size=100&status=active" | jq -r '.results[].name' >> $TMP_FILE
  done
  # Use fzf to search the file and delete it afterwards
  cat $TMP_FILE | fzf
  rm -f $TMP_FILE
}

使い方

公式イメージを検索したい場合

search_docker_image_tag python

普通のレポジトリのDockerイメージを検索したい場合

search_docker_image_tag nvidia/cuda