これは、なにをしたくて書いたもの?
docker image lsの結果のフィルタリングとフォーマットを方法を少し覚えておこうかなと思いまして。
だいたい、ちゃんと覚えずにgrepやperlでやるような力技に頼っていたので。
ドキュメントで見る
参考にするのはこのあたりですね。
Format command and log output | Docker Docs
少し試してみます。
環境
今回の環境はこちら。
$ docker version Client: Docker Engine - Community Version: 28.5.1 API version: 1.51 Go version: go1.24.8 Git commit: e180ab8 Built: Wed Oct 8 12:17:26 2025 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 28.5.1 API version: 1.51 (minimum version 1.24) Go version: go1.24.8 Git commit: f8215cc Built: Wed Oct 8 12:17:26 2025 OS/Arch: linux/amd64 Experimental: false containerd: Version: v1.7.28 GitCommit: b98a3aace656320842a23f4a392a33f46af97866 runc: Version: 1.3.0 GitCommit: v1.3.0-0-g4ca628d1 docker-init: Version: 0.19.0 GitCommit: de40ad0
実践
ローカルに以下のようなイメージがあるとします。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.29.2 657fdcd1c365 2 weeks ago 152MB duckdb/duckdb 1.4.1 54fec7e7a9cd 2 weeks ago 80.5MB duckdb/duckdb 1.4.0 100e20ce644b 4 weeks ago 80.4MB duckdb/duckdb 1.3.2 ddc39fae8ed6 4 weeks ago 75.1MB nginx 1.28.0 8d14817f0061 2 months ago 192MB
だいたいなにかのイメージ名とタグで欲しくなると思うので、こんな感じでしょうか。
$ docker image ls --filter=reference='[イメージ名]:*' --format '{{.Repository}}:{{.Tag}}'
簡単に使う場合は、最新の1件が欲しいことが多いのではないかと思います。
$ docker image ls --filter=reference='[イメージ名]:*' --format '{{.Repository}}:{{.Tag}}' | head -n 1
実行例。
$ docker image ls --filter=reference='duckdb/duckdb:*' --format '{{.Repository}}:{{.Tag}}' | head -n 1
duckdb/duckdb:1.4.1
$ docker image ls --filter=reference='nginx:*' --format '{{.Repository}}:{{.Tag}}' | head -n 1
nginx:1.29.2
ちょっとしたスクリプト向けのメモです。