Dockerイメージフィルターの使用方法


83

私は書くことができます

docker images --filter "dangling=true"

他にどのようなフィルターを使用できますか?

私はこのようなものを使うことができますか?

docker images --filter "running=false"

回答:


87

Docker v1.13.0は、次の条件をサポートしています。

  -f, --filter value    Filter output based on conditions provided (default [])
                        - dangling=(true|false)
                        - label=<key> or label=<key>=<value>
                        - before=(<image-name>[:tag]|<image-id>|<image@digest>)
                        - since=(<image-name>[:tag]|<image-id>|<image@digest>)
                        - reference=(pattern of an image reference)

または、grep画像を何らかの値でフィルタリングするために使用します。

$ docker images | grep somevalue

参考文献


5
回答を更新してください。現在、2017年2月の時点で、さらにいくつかのパラメーターがサポートされています。
Greg Dubicki 2017

5
完璧ではありませんが、上記を使用すると、次のようなことができますdocker images -f "reference=*/*/*latest"-これにより、のようなものが得られますk8s:30000/github/someImage:latest。またはdocker images -f "reference=*/*latest"あなたを取得しますk8s:30000/someImage:latest。-あなたはそれらをクリーンアップするために欠けている場合docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Mark_Eng

リポジトリ名で特定の画像を除外するにはどうすればよいですか?
可変

40

REPOSITORY引数を使用してdocker imagesて画像をフィルタリングます。

たとえば、次の画像があるとします。

$ docker images
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
local-foo            latest       17864104b328     2 months ago    100 MB
example.com/bar      latest       b94c37de2801     9 months ago    285 MB
example.com/baz      latest       a004e3ac682c     2 years ago     221 MB

指定された名前のすべての画像を明示的にフィルタリングできます。

$ docker images example.com/bar
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
example.com/bar      latest       b94c37de2801     9 months ago    285 MB

Dockerはグロブもサポートしています。

$ docker images "example.com/*"
REPOSITORY           TAG          IMAGE ID         CREATED         SIZE
example.com/bar      latest       b94c37de2801     9 months ago    285 MB
example.com/baz      latest       a004e3ac682c     2 years ago     221 MB

公式ドキュメントはこちら


3
*ワイルドカード文字は/リポジトリ名には適用されないことに注意してください。したがって、最後の例では、タグ付きのすべての画像を一覧表示するにlatestは、コマンドdocker images --filter=reference='*:latest'が間違っています。正しいコマンドはdocker images --filter=reference='*/*:latest'です。
トマーシュZáluský

この間ずっと私は探していました--filter name=something-そしてずっと、簡単な解決策はあなたが(n明示的な)フィルターをまったく必要としないということでした!
トリプリー

2
まだ困惑している人のために...あなたが画像を探しているならopenapitools/openapi-generator-cli、それからそれdocker images open*を見つけることができません。しかしdocker images open*/*、それを見つけるでしょう。
ライアンランディ

12

Docker v1.7の場合:

現在サポートされているフィルターは次のとおりです。

  • ぶら下がり(ブール-trueまたはfalse
  • ラベル(label=<key>またはlabel=<key>=<value>

1
Docker v1.12以降、before=<image-name>[:tag]|<image-id>|<image@digest>since=(<image-name>[:tag]|<image-id>|<image@digest>)
xwlee 2016年

6

私のために、

docker images -q | while read IMAGE_ID; do
    docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done

トリックをしました。dateコマンドは、を介して同じ形式で出力を生成できます。

date -Ins --date='10 weeks ago'

これにより、タイムスタンプを比較できます。ただし、便宜上、画像をぶら下げるためにフィルターを使用しています。



0

別の例があり、バージョン17.09 ++で動作します。

sudo docker rmi $(sudo docker images -f=reference="registry.gitlab.com/example-app" -f "dangling=true" -q)

説明:

  • reference -リポジトリ名で画像を参照しています。
  • dangling=true -タグなしの画像を削除しています。
  • -q -静かなことを意味し、行全体ではなく、画像の数値IDのみを表示します。

このコマンドは、リポジトリ名が「registry.gitlab.com/example-app」でタグが付いていない(<none>タグ列にある)すべてのイメージを削除します

参照リンク:https//docs.docker.com/engine/reference/commandline/images/#filtering

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.