Dockerイメージから特定のラベルがあるか判定する

2022.04.11
2024.03.24
Docker
jq

はじめに

Dockerイメージから特定のラベルが含まれているか判定する方法を解説します。

Dockerのラベル

まず、そもそもDockerのラベルについて、簡単に解説します。

Dockerのラベルは、イメージやコンテナに付与できるメタデータです。Dockerfileでは、LABELというインストラクションで設定できます。

Docker object labels

Docker object labels

Learn about labels, a tool to manage metadata on Docker objects.

このDockerのラベルですが、**OCI Image Specificationではアノテーション(Annotation)**と呼ばれています。

image-spec/annotations.md at main · opencontainers/image-spec

image-spec/annotations.md at main · opencontainers/image-spec

OCI Image Format. Contribute to opencontainers/image-spec development by creating an account on GitHub.

特定のラベルがあるか判定

一覧を取得する

docker inspectjqコマンドでラベル一覧を取得できます。

1docker inspect <image name or image ID> --format="{{json .Config.Labels}}" | jq
1docker inspect nginx --format="{{json .Config.Labels}}" | jq
2{
3  "maintainer": "NGINX Docker Maintainers <[email protected]>"
4}

見つからない場合にエラーコードを返す

さらにgrepコマンドを使うことで、見つからない場合にエラーコード1を返すようにできます。

1docker inspect <image name or image ID> --format="{{json .Config.Labels}}" | jq | grep <pattern>

echo $?で確認すると、マッチするラベルがあれば0を、見つからない場合は1が返ってきていることが確認できます。

1docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep hoge
2
3echo $?
41
5
6docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep maintainer
7  "maintainer": "NGINX Docker Maintainers <[email protected]>"
8
9echo $?
100

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee