skopeoでコンテナイメージで利用可能な全てのタグを表示する
skopeoを使ってコンテナイメージで利用可能なタグを一覧表示する方法をメモしておきます。
検証環境¶
| 対象 | バージョン |
|---|---|
| macOS | Tahoe 26.3.1 |
インストール¶
いずれのOSであってもインストールは簡単です。
Ubuntu¶
標準リポジトリからインストールできました。
apt-get update
apt-get install -y skopeo
macOS¶
Homebrewでインストールできました。
brew install skopeo
skopeoの基本的な使い方¶
skopeoではイメージ名に「docker://」というトランスポートを指定するのが基本ルールです。但し、対象イメージの公開場所・種類などによってURL構造が異なります。
DockerHubの公式イメージ¶
nginxやubuntuなどの公式イメージ(URL構造にユーザ名を含まないもの)は、libraryという名前空間に属しています。ですので例えばnginxであれば以下のように指定します。
skopeo list-tags docker://docker.io/library/nginx
実際の実行例は以下の通りです。レスポンスはJSON形式です。
# skopeo list-tags docker://docker.io/library/nginx
{
"Repository": "docker.io/library/nginx",
"Tags": [
"1",
"1-alpine",
"1-alpine-otel",
"1-alpine-perl",
・
・
(snip)
・
・
"trixie",
"trixie-otel",
"trixie-perl"
]
}
JSON形式ではなく、タグの文字列だけを取得するにはjqを利用して以下のように実行します。
# skopeo list-tags docker://docker.io/library/nginx | jq -r '.Tags[]'
1
1-alpine
1-alpine-otel
・
・
(snip)
・
・
trixie
trixie-otel
trixie-perl
DockerHubの一般的なイメージ(ユーザイメージ)¶
DockerHubへユーザが登録した一般的なイメージであれば、skopeoで指定すべきURL構造は以下です。
docker://docker.io/[ユーザ名]/[リポジトリ名]
DockerHubのsig9/alpine-openssh-clientであれば、以下のように指定します。
skopeo list-tags docker://docker.io/sig9/alpine-openssh-client
実行例は以下の通りです。
% skopeo list-tags docker://docker.io/sig9/alpine-openssh-client
{
"Repository": "docker.io/sig9/alpine-openssh-client",
"Tags": [
"10.0_p1-r10",
"10.2_p1-r0",
"6.6_p1-r8",
・
・
(snip)
・
・
"9.7_p1-r5",
"9.9_p2-r0",
"latest"
]
}
同じく「タグの文字列だけ取得する」場合は以下のように実行します。
skopeo list-tags docker://docker.io/sig9/alpine-openssh-client | jq -r '.Tags[]'
DockerHub以外のレジストリ¶
DockerHub以外のレジストリであれば、例えば以下のようなURL構造を指定します。
| レジストリ種別 | URLの形式例 |
|---|---|
| GitHub (GHCR) | docker://ghcr.io/OWNER/IMAGE_NAME |
| Google (GCR) | docker://gcr.io/PROJECT_ID/IMAGE_NAME |
| Quay.io | docker://quay.io/USER/IMAGE_NAME |
| AWS (ECR) | docker://[ACCOUNT_ID].dkr.ecr.[REGION].amazonaws.com/REPO |