☁️

[Docker]searchコマンドでOfficialのイメージのみを抜き出すワンライナー

2021/01/28に公開
  • Dockerhubからイメージを持ってくる際に、docker searchコマンドで検索することは多い。
  • その際に、Official欄を見て公式かどうかを確認する状況も多い。
  • 今回は、検索結果からOfficialのイメージを抜き出すシェルを記録する。

環境

  • Mac OS X 10.15.6
  • Docker version 19.03.12

結果

  • 結果の記述は以下の通り。
# ubuntu
docker search ubuntu | awk -F '  +' '{gsub(/[0-9]+/,"[NO]",$(NF-1)); print $1,$(NF-1)}' | grep -v "\[NO\]"


NAME OFFICIAL
ubuntu [OK]
websphere-liberty [OK]
ubuntu-upstart [OK]
neurodebian [OK]
ubuntu-debootstrap [OK]
open-liberty [OK]

# alpine
docker search alpine | awk -F '  +' '{gsub(/[0-9]+/,"[NO]",$(NF-1)); print $1,$(NF-1)}' | grep -v "\[NO\]"

NAME OFFICIAL
alpine [OK]

# node
docker search node | awk -F '  +' '{gsub(/[0-9]+/,"[NO]",$(NF-1)); print $1,$(NF-1)}' | grep -v "\[NO\]"

NAME OFFICIAL
node [OK]
mongo-express [OK]
iojs [OK]

補足

awkでの正規表現による区切り指定

  • docker searchコマンドは、多用な空白で見やすくなっている。
  • そのため、awkで連続空白を区切り文字として正規表現で指定する必要がある。

空白の扱い

  • docker searchコマンドは、該当しない場合は空白になっている。
  • そのため、該当フィールドが1つ前のフィールドとなっている場合、**"NO"**と置換している。
    • ※officalイメージの抜き出しのため、starを出さない想定。

公式コマンド

  • 以下のような公式であるサブコマンドのfilterを利用することも可能。
    • ※必要な項目のみの抽出とawkの習得のため、今回は利用していない。
# ubuntu検索
docker search ubuntu --filter "is-official=true"

参考

Discussion