コマンドラインから”Docker Hub”のDockerイメージを検索し詳細ページを開くスクリプト

2023-03-31Docker

はじめに

Docker Hub からDockerイメージを検索するためのコマンドとして、 docker search コマンドが利用できます。
ただ、実際に便利なイメージが見つかったとしても利用する際には詳細ページを閲覧し、カスタマイズするための環境変数を確認したり、エントリポイントとなるコマンドのオプションを確認したりすることが多いです。

そこで、 docker search を実行しつつ、検索上位リポジトリの詳細ページをブラウザで開くようにしてみました。

検証環境

$ uname -moi
x86_64 MacBookPro11,4 Darwin

$ bash -version | head -n 1
GNU bash, バージョン 5.0.9(1)-release (x86_64-apple-darwin18.6.0)

必要なもの

  • Docker( docker search コマンドを使いたいため)
  • Chromeブラウザ

作成したスクリプト

"dockerhub" というスクリプトファイル名で保存します。

#!/usr/bin/env bash
set -o errexit
set -o nounset

declare -r KEYWORD="${1}"
declare -r SELECTED_ROW_COUNT="${2:-1}"

TMP=$(mktemp)

# 標準出力と同時に一時ファイルにヘッダ行を除去して書き出しておく
docker search "${KEYWORD}" \
  | tee >(sed '1d' >"${TMP}")

# 指定された数分、検索上位のリポジトリをブラウザで開く
[[ $(cat "${TMP}" | wc -l) -ge ${SELECTED_ROW_COUNT} ]] && {
  cat "${TMP}" \
    | sed -n "1,${SELECTED_ROW_COUNT}p" \
    | awk '{ print $1 }' \
    | sed 's@^[^/]\+$@library/\0@' \
    | xargs -n 1 -I{} open "https://hub.docker.com/r/{}"
}

以下はGistのコード(AMPページに対応できないので、GistのScriptは使っていません)

https://gist.github.com/genzouw/bdfa5f467f4feaaf089dba30fe4c824d#file-dockerhub

使い方

# 通常の `docker search` コマンドと同様の結果が出力された後、トップの検索結果リポジトリの詳細ページが開かれます。
$ dockerhub httpd
NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
httpd                                The Apache HTTP Server Project                  2603                [OK]
centos/httpd                                                                         23                                      [OK]
centos/httpd-24-centos7              Platform for running Apache httpd 2.4 or bui…   22
armhf/httpd                          The Apache HTTP Server Project                  8
polinux/httpd-php                    Apache with PHP in Docker (Supervisor, CentO…   3                                       [OK]
salim1983hoop/httpd24                Dockerfile running apache config                2                                       [OK]
lead4good/httpd-fpm                  httpd server which connects via fcgi proxy h…   1                                       [OK]
rgielen/httpd-image-simple           Docker image for simple Apache httpd based o…   1                                       [OK]
manageiq/httpd_configmap_generator   Httpd Configmap Generator                       0                                       [OK]
dockerpinata/httpd                                                                   0
manasip/httpd                                                                        0
interlutions/httpd                   httpd docker image with debian-based config …   0                                       [OK]
publici/httpd                        httpd:latest                                    0                                       [OK]
izdock/httpd                         Production ready Apache HTTPD Web Server + m…   0
amd64/httpd                          The Apache HTTP Server Project                  0
appertly/httpd                       Customized Apache HTTPD that uses a PHP-FPM …   0                                       [OK]
itsziget/httpd24                     Extended HTTPD Docker image based on the off…   0                                       [OK]
buzzardev/httpd                      Based on the official httpd image               0                                       [OK]
manageiq/httpd                       Container with httpd, built on CentOS for Ma…   0                                       [OK]
ppc64le/httpd                        The Apache HTTP Server Project                  0
tugboatqa/httpd                      The Apache HTTP Server Project                  0
solsson/httpd-openidc                mod_auth_openidc on official httpd image, ve…   0                                       [OK]
alvistack/httpd                      Docker Image Packaging for Apache               0                                       [OK]
waja/httpdiff                        Docker image for httpdiff: https://github.co…   0                                       [OK]
trollin/httpd                                                                        0

# 第2引数にオープンする詳細ページの数を指定可能。(デフォルトは1)
$ dockerhub httpd 3 | head -n 4
NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
httpd                                The Apache HTTP Server Project                  2603                [OK]
centos/httpd                                                                         23                                      [OK]
centos/httpd-24-centos7              Platform for running Apache httpd 2.4 or bui…   22

2023-03-31Docker