Dockerイメージから特定のラベルがあるか判定する
2022.04.11
2024.03.24
Docker
jq
はじめに
Dockerイメージから特定のラベルが含まれているか判定する方法を解説します。
Dockerのラベル
まず、そもそもDockerのラベルについて、簡単に解説します。
Dockerのラベルは、イメージやコンテナに付与できるメタデータです。Dockerfileでは、LABEL
というインストラクションで設定できます。
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
OCI Image Format. Contribute to opencontainers/image-spec development by creating an account on GitHub.
特定のラベルがあるか判定
一覧を取得する
docker inspect
とjq
コマンドでラベル一覧を取得できます。
1docker inspect <image name or image ID> --format="{{json .Config.Labels}}" | jq
1❯ docker 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
が返ってきていることが確認できます。
1❯ docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep hoge
2
3❯ echo $?
41
5
6❯ docker inspect nginx --format="{{json .Config.Labels}}" | jq | grep maintainer
7 "maintainer": "NGINX Docker Maintainers <[email protected]>"
8
9❯ echo $?
100
参考
Share
関連記事
【Docker】Dockerfileのインストラクションまとめ
2021.09.26
Docker Composeでコンテナ間通信
2021.10.08
【Docker】Nginx+uWSGI+Flaskのコンテナ構築
2021.09.20
Docker ComposeでNext.jsとflask開発環境を構築する
2021.10.12