CLI (推奨) または curl を使用して、リモート Docker レジストリ上の Docker イメージのすべてのタグを一覧表示するにはどうすればよいでしょうか?
できれば、リモート レジストリからすべてのバージョンを取得せずに、タグを一覧表示したいだけです。
ベストアンサー1
更新: DockerはDocker Hub v1 API を非推奨にしました. タグを取得するにはv2 API、例えば
wget -q -O - "https://hub.docker.com/v2/namespaces/library/repositories/debian/tags?page_size=100" | grep -o '"name": *"[^"]*' | grep -o '[^"]*$'
注:結果は最新の 100 個のタグに限定されます。次の 100 個のタグを取得するには、URL をhttps://.../tags?page_size=100&page=2
etcに設定します。
Docker 公式イメージ以外のイメージの場合は、library
ユーザー/組織の名前に置き換えます。
URLhttps://hub.docker.com/v2/repositories/{namespace}/{repository}/tags
も現時点では機能しますが、API 仕様からは合法かどうかは不明です。
(jq
インストールしている場合は、この不格好な grep コマンドを に置き換えることができますjq -r '.results[].name'
。)
元の回答 (v1 API、サポート終了):
私は答えを得たここ。 どうもありがとう! :)
たった 1 行のスクリプト:(debian のすべてのタグを検索)
wget -q https://registry.hub.docker.com/v1/repositories/debian/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}'
更新 @degelf のアドバイスに感謝します。これがシェル スクリプトです。
#!/bin/bash
if [ $# -lt 1 ]
then
cat << HELP
dockertags -- list all tags for a Docker image on a remote registry.
EXAMPLE:
- list all tags for ubuntu:
dockertags ubuntu
- list all php tags containing apache:
dockertags php apache
HELP
fi
image="$1"
tags=`wget -q https://registry.hub.docker.com/v1/repositories/${image}/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}'`
if [ -n "$2" ]
then
tags=` echo "${tags}" | grep "$2" `
fi
echo "${tags}"
/usr/local/bin の下に新しいファイル名 を作成し(または/dockertags
に PATH 環境を追加し)、そのコードを配置するだけです。次に、実行権限 ( ) を追加します。.bashrc
.zshrc
chmod +x dockertags
使用法:
dockertags ubuntu
---> Ubuntu のすべてのタグを一覧表示します
dockertags php apache
---> 'apache' を含むすべての PHP タグを一覧表示します