docker images

読む時間の目安: 6 分

説明

イメージを一覧表示します。

利用方法

$ docker images [オプション] [REPOSITORY[:TAG]]

追加説明

docker imagesはデフォルトで、すべてのトップレベルイメージ、そのリポジトリとタグ、そのサイズを表示します。

Docker イメージには中間レイヤーが含まれるため、ディスク容量を必要としますが再利用性は増えます。 したがってdocker buildの各処理ステップにおけるキャッシュの利用によって、処理速度が向上します。 そのような中間レイヤーはデフォルトでは表示されません。

SIZEはイメージと親イメージによって占有される合計サイズです。 これはまた、docker saveによりイメージを生成した際の tar ファイルのディスク容量でもあります。

イメージが複数のリポジトリ名やタグを持っている場合は、一覧に複数回表示されます。 その 1 つのイメージ(IMAGE IDが一致するもの)のSIZE欄に同一サイズが示されます。

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

名前/省略形 デフォルト 説明
--all , -a イメージをすべて表示します。(デフォルトでは中間イメージが表示されません。)
--digests ダイジェスト値を表示します。
--filter , -f 指定された条件に基づいてフィルター検索を行います。
--format Go 言語テンプレートを使って出力をフォーマットします。
--no-trunc 詳細出力を行います。
--quiet , -q イメージ ID のみを表示します。

利用例

最近生成したイメージの一覧

$ docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
<none>                    <none>              77af4d6b9913        19 hours ago        1.089 GB
committ                   latest              b6fa739cedf5        19 hours ago        1.089 GB
<none>                    <none>              78a85c484f71        19 hours ago        1.089 GB
docker                    latest              30557a29d5ab        20 hours ago        1.089 GB
<none>                    <none>              5ed6274db6ce        24 hours ago        1.089 GB
postgres                  9                   746b819f315e        4 days ago          213.4 MB
postgres                  9.3                 746b819f315e        4 days ago          213.4 MB
postgres                  9.3.5               746b819f315e        4 days ago          213.4 MB
postgres                  latest              746b819f315e        4 days ago          213.4 MB

名前とタグ指定によるイメージ一覧

docker imagesコマンドには任意に指定できる[REPOSITORY[:TAG]]引数があります。 この引数に合致するものだけが一覧出力されます。 REPOSITORYだけ指定しTAGを指定しなかった場合、docker imagesコマンドは指定されたリポジトリ内にあるイメージをすべて一覧表示します。

たとえば「java」リポジトリのイメージすべてを表示するには、以下のコマンドを実行します。

$ docker images java

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                8                   308e519aac60        6 days ago          824.5 MB
java                7                   493d82594c15        3 months ago        656.3 MB
java                latest              2711b1d6f3aa        5 months ago        603.9 MB

[REPOSITORY[:TAG]]の値は完全に一致するものを指定しなければなりません。 たとえばdocker images javを実行しても、イメージ名javaには一致しません。

REPOSITORYTAGの両方を指定した場合、リポジトリとタグが一致したイメージのみが一覧表示されます。 「java」リポジトリにあるローカルイメージで「8」というタグを持つものを検索するには、以下のようにします。

$ docker images java:8

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                8                   308e519aac60        6 days ago          824.5 MB

REPOSITORY[:TAG]に一致するものがなければ、一覧には何も表示されません。

$ docker images java:0

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

完全なイメージ ID による一覧表示

$ docker images --no-trunc

REPOSITORY                    TAG                 IMAGE ID                                                                  CREATED             SIZE
<none>                        <none>              sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182   19 hours ago        1.089 GB
committest                    latest              sha256:b6fa739cedf5ea12a620a439402b6004d057da800f91c7524b5086a5e4749c9f   19 hours ago        1.089 GB
<none>                        <none>              sha256:78a85c484f71509adeaace20e72e941f6bdd2b25b4c75da8693efd9f61a37921   19 hours ago        1.089 GB
docker                        latest              sha256:30557a29d5abc51e5f1d5b472e79b7e296f595abcf19fe6b9199dbbc809c6ff4   20 hours ago        1.089 GB
<none>                        <none>              sha256:0124422dd9f9cf7ef15c0617cda3931ee68346455441d66ab8bdc5b05e9fdce5   20 hours ago        1.089 GB
<none>                        <none>              sha256:18ad6fad340262ac2a636efd98a6d1f0ea775ae3d45240d3418466495a19a81b   22 hours ago        1.082 GB
<none>                        <none>              sha256:f9f1e26352f0a3ba6a0ff68167559f64f3e21ff7ada60366e2d44a04befd1d3a   23 hours ago        1.089 GB
tryout                        latest              sha256:2629d1fa0b81b222fca63371ca16cbf6a0772d07759ff80e8d1369b926940074   23 hours ago        131.5 MB
<none>                        <none>              sha256:5ed6274db6ceb2397844896966ea239290555e74ef307030ebb01ff91b1914df   24 hours ago        1.089 GB

イメージダイジェストの一覧表示

イメージ仕様の v2 またはそれ以降を利用するイメージには、digest(ダイジェスト)と呼ぶ連想識別子(content-addressable identifier)があります。 イメージ生成に用いられた入力内容が変更されていない限り、ダイジェスト値は予測できます。 イメージダイジェストの一覧を表示するには--digestsフラグを利用します。

$ docker images --digests
REPOSITORY                         TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
localhost:5000/test/busybox        <none>              sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf   4986bf8c1536        9 weeks ago         2.43 MB

レジストリバージョン 2.0 に対してプッシュやプルを行う際には、pushpullコマンドの出力にイメージダイジェストが表示されます。 pullの際にダイジェスト値を用いることが可能であり、createrunrmiといったコマンドにおいてはダイジェスト値を使ってイメージを参照することもできます。 また Dockerfile 内でのFROMにおいて、イメージを参照するために用いることもできます。

フィルター検索

フィルターフラグ(-f または --filter)の指定書式は「キー=値」というものです。 複数のフィルターが必要な場合は、フラグを複数指定します。 (たとえば --filter "foo=bar" --filter "bif=baz" など。)

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

  • dangling (ブール値 - true または false)
  • label (label=<key> または label=<key>=<value>)
  • before (<image-name>[:<tag>],<image id>または<image@digest>) - 指定された ID または参照名より以前に生成されたイメージを検索。
  • since (<image-name>[:<tag>],<image id>または<image@digest>) - 指定された ID または参照名より以降に生成されたイメージを検索。
  • 参照名(イメージ参照のパターン) - 参照名が指定パターンに一致するイメージを検索。

タグづけなしイメージの表示 (dangling)

$ docker images --filter "dangling=true"

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              8abc22fbb042        4 weeks ago         0 B
<none>              <none>              48e5f45168b9        4 weeks ago         2.489 MB
<none>              <none>              bf747efa0e2f        4 weeks ago         0 B
<none>              <none>              980fe10e5736        12 weeks ago        101.4 MB
<none>              <none>              dea752e4e117        12 weeks ago        101.4 MB
<none>              <none>              511136ea3c5a        8 months ago        0 B

これは、イメージツリーの葉にあたる(中間レイヤーではない)、タグづけされていないイメージを表示します。 そのようなイメージは新規ビルドの際に、イメージ ID からrepo:tagが取り除かれることで発生し、<none>:<none>やタグなしの状態になります。 コンテナーがイメージをまだ利用している状態で、そのイメージを削除しようとすると、警告メッセージが表示されます。 このフラグを指定して、バッチ処理による削除が可能になります。

つまりdocker rmi ...と合わせて以下のようにします。

$ docker rmi $(docker images -f "dangling=true" -q)

8abc22fbb042
48e5f45168b9
bf747efa0e2f
980fe10e5736
dea752e4e117
511136ea3c5a

タグづけされていないイメージをまだ利用するコンテナーが存在していたときは、警告が表示されます。

ラベル指定によるイメージの表示

labelフィルターは、イメージがlabel単体を持つか、あるいはlabelとその値を持つものを検索します。

以下のフィルター指定は、ラベルとしてcom.example.versionを持つものを検索し、その値は問いません。

$ docker images --filter "label=com.example.version"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
match-me-1          latest              eeae25ada2aa        About a minute ago   188.3 MB
match-me-2          latest              dea752e4e117        About a minute ago   188.3 MB

以下のフィルター指定は、ラベルとしてcom.example.versionを持ち、その値が1.0であるものを検索します。

$ docker images --filter "label=com.example.version=1.0"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
match-me            latest              511136ea3c5a        About a minute ago   188.3 MB

以下の例では、ラベルの値として0.1を持つものを検索しますが、一致するものがなかったとして結果が空となったことを表わします。

$ docker images --filter "label=com.example.version=0.1"
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE

時刻指定によるイメージ検索

beforeフィルターは、指定された ID または参照名を持つイメージより以前に生成されたイメージのみを表示します。 たとえばはじめに以下のイメージがあったとします。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
image2              latest              dea752e4e117        9 minutes ago        188.3 MB
image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

beforeのフィルタリング結果として以下が得られます。

$ docker images --filter "before=image1"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image2              latest              dea752e4e117        9 minutes ago        188.3 MB
image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

sinceのフィルタリング結果は以下です。

$ docker images --filter "since=image3"
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
image2              latest              dea752e4e117        9 minutes ago        188.3 MB

参照名によりイメージ検索

referenceフィルターは、参照名が指定されたパターンに一致するイメージのみを表示します。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              e02e811dd08f        5 weeks ago         1.09 MB
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             musl                733eb3059dce        5 weeks ago         1.21 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

referenceのフィルタリング結果は以下です。

$ docker images --filter=reference='busy*:*libc'

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

複数のreferenceによるフィルタリングを行うと、A または B に一致するものを検索します。

$ docker images --filter=reference='busy*:uclibc' --filter=reference='busy*:glibc'

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

フォーマット設定

フォーマット設定オプション(--format)により Go 言語のテンプレートを利用して、コンテナーをわかりやすく出力することができます。

Go 言語テンプレートによるプレースホルダー(placeholder)は以下のとおりです。

プレースホルダー 内容説明
.ID イメージ ID
.Repository イメージリポジトリ
.Tag イメージタグ
.Digest イメージダイジェスト
.CreatedSince イメージが生成されてからの経過時刻
.CreatedAt イメージが生成された時刻
.Size イメージディスクサイズ

--formatオプションを利用するとimageコマンドは、テンプレートが定めるデータを直接出力します。 またtableディレクティブを利用すると、カラムヘッダーも同時に出力されます。

以下は、ヘッダーを含めずにテンプレートを利用する例であり、すべてのイメージにおけるIDRepositoryの各項目がコロン(:)で区切って表示されます。

$ docker images --format "{{.ID}}: {{.Repository}}"

77af4d6b9913: <none>
b6fa739cedf5: committ
78a85c484f71: <none>
30557a29d5ab: docker
5ed6274db6ce: <none>
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres

イメージの一覧をリポジトリ、タグとともに表形式で出力するには、以下のようにします。

$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID            REPOSITORY                TAG
77af4d6b9913        <none>                    <none>
b6fa739cedf5        committ                   latest
78a85c484f71        <none>                    <none>
30557a29d5ab        docker                    latest
5ed6274db6ce        <none>                    <none>
746b819f315e        postgres                  9
746b819f315e        postgres                  9.3
746b819f315e        postgres                  9.3.5
746b819f315e        postgres                  latest

上位コマンド

コマンド 説明
docker Docker CLI の基本コマンド