☁️
[Docker]searchコマンドでOfficialのイメージのみを抜き出すワンライナー
- 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