はじめに
Dockerイメージから特定のラベルが含まれているか判定する方法を解説します。
Dockerのラベル
まず、そもそもDockerのラベルについて、簡単に解説します。
Dockerのラベルは、イメージやコンテナに付与できるメタデータです。Dockerfileでは、LABEL
というインストラクションで設定できます。

Docker object labels
Description of labels, which are used to manage metadata on Docker objects.
このDockerのラベルですが、OCI Image Specificationではアノテーション(Annotation)と呼ばれています。
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 inspect
とjq
コマンドでラベル一覧を取得できます。
docker inspect <image name or image ID> --format="{{json .Config.Labels}}" | jq
❯ docker inspect nginx --format="{{json .Config.Labels}}" | jq
{
"maintainer": "NGINX Docker Maintainers <[email protected]>"
}
見つからない場合にエラーコードを返す
さらにgrep
コマンドを使うことで、見つからない場合にエラーコード1
を返すようにできます。
docker inspect <image name or image ID> --format="{{json .Config.Labels}}" | jq | grep <pattern>
echo $?
で確認すると、マッチするラベルがあれば0
を、見つからない場合は1
が返ってきていることが確認できます。
❯ docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep hoge
❯ echo $?
1
❯ docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep maintainer
"maintainer": "NGINX Docker Maintainers <[email protected]>"
❯ echo $?
0