Docker命令行参考(8) – docker images列出镜像

  1. Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
  2.  
  3. List images
  4.  
  5. Options:
  6.   -a, --all             Show all images (default hides intermediate images)
  7.       --digests         Show digests
  8.   -f, --filter value    Filter output based on conditions provided (default [])
  9.                         - dangling=(true|false)
  10.                         - label=<key> or label=<key>=<value>
  11.                         - before=(<image-name>[:tag]|<image-id>|<image@digest>)
  12.                         - since=(<image-name>[:tag]|<image-id>|<image@digest>)
  13.       --format string   Pretty-print images using a Go template
  14.       --help            Print usage
  15.       --no-trunc        Don't truncate output
  16.   -q, --quiet           Only show numeric IDs

默认下docker images显示所有顶层的镜像,它们的仓库,tag和它们的大小。
docker镜像有中间数据层来提高可重用性,减小硬盘占用和通过允许每一个步骤缓存来加速docker build。这些中间层默认不显示。
SIZE列显示的是该镜像和其所有父镜像累积的空间大小。这也是在Docker save镜像时创建的Tar文件的内容使用的磁盘空间。
如果一个镜像有多个存储库名称或tag,将会列出多次。

列出最近创建的镜像

  1. $ docker images
  2. REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
  3. <none>                    <none>              77af4d6b9913        19 hours ago        1.089 GB
  4. committ                   latest              b6fa739cedf5        19 hours ago        1.089 GB
  5. <none>                    <none>              78a85c484f71        19 hours ago        1.089 GB
  6. docker                    latest              30557a29d5ab        20 hours ago        1.089 GB
  7. <none>                    <none>              5ed6274db6ce        24 hours ago        1.089 GB
  8. postgres                  9                   746b819f315e        4 days ago          213.4 MB
  9. postgres                  9.3                 746b819f315e        4 days ago          213.4 MB
  10. postgres                  9.3.5               746b819f315e        4 days ago          213.4 MB
  11. postgres                  latest              746b819f315e        4 days ago          213.4 MB

基于名称和tag列出镜像

docker images命令接受一个可选的[REPOSITORY[:TAG]]参数来限制列出匹配参数的镜像。如果只指定存储库名称没有指定tag,docker images命令列出匹配的存储库名称的所有镜像。
例如,列出所有”java”镜像,命令如下:

  1. $ docker images java
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  3. java                8                   308e519aac60        6 days ago          824.5 MB
  4. java                7                   493d82594c15        3 months ago        656.3 MB
  5. java                latest              2711b1d6f3aa        5 months ago        603.9 MB

[REPOSITORY[:TAG]]值必须是完全匹配的。例如,docker images jav不会匹配镜像java。
如果REPOSITORY和TAG都提供了,只列出出匹配repository和tag的镜像。例如:

  1. $ docker images java:8
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  3. java                8                   308e519aac60        6 days ago          824.5 MB

如果没有匹配REPOSITORY[:TAG],列表为空:

  1. $ docker images java:0
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

列出完整的镜像ID

  1. $ docker images --no-trunc
  2. REPOSITORY                    TAG                 IMAGE ID                                                                  CREATED             SIZE
  3. <none>                        <none>              sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182   19 hours ago        1.089 GB
  4. committest                    latest              sha256:b6fa739cedf5ea12a620a439402b6004d057da800f91c7524b5086a5e4749c9f   19 hours ago        1.089 GB
  5. <none>                        <none>              sha256:78a85c484f71509adeaace20e72e941f6bdd2b25b4c75da8693efd9f61a37921   19 hours ago        1.089 GB
  6. docker                        latest              sha256:30557a29d5abc51e5f1d5b472e79b7e296f595abcf19fe6b9199dbbc809c6ff4   20 hours ago        1.089 GB
  7. <none>                        <none>              sha256:0124422dd9f9cf7ef15c0617cda3931ee68346455441d66ab8bdc5b05e9fdce5   20 hours ago        1.089 GB
  8. <none>                        <none>              sha256:18ad6fad340262ac2a636efd98a6d1f0ea775ae3d45240d3418466495a19a81b   22 hours ago        1.082 GB
  9. <none>                        <none>              sha256:f9f1e26352f0a3ba6a0ff68167559f64f3e21ff7ada60366e2d44a04befd1d3a   23 hours ago        1.089 GB
  10. tryout                        latest              sha256:2629d1fa0b81b222fca63371ca16cbf6a0772d07759ff80e8d1369b926940074   23 hours ago        131.5 MB
  11. <none>                        <none>              sha256:5ed6274db6ceb2397844896966ea239290555e74ef307030ebb01ff91b1914df   24 hours ago        1.089 GB

列出镜像digests

使用v2或之后格式的镜像有一个称为digest的内容可寻址标识符。只要用来生成镜像的输入没有更改,这个digest值是可预测的。要列出镜像的digest值,使用–digests参数:

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

过滤

过滤标志-f or –filter格式为key=value。如果超过一个过滤,那么就传递多个标志[如–filter “foo=bar” –filter “bif=baz”]。
目前支持的过滤有:

  • dangling [布尔值 true或false]
  • label (label=或label==)
  • before ([:], or ) – 过滤出指定镜像之前的镜像
  • since ([:], or ) – 过滤出指定镜像之后的镜像
  • 无tag镜像(dangling)

    1. $ docker images --filter "dangling=true"
    2.  
    3. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    4. <none>              <none>              8abc22fbb042        4 weeks ago         0 B
    5. <none>              <none>              48e5f45168b9        4 weeks ago         2.489 MB
    6. <none>              <none>              bf747efa0e2f        4 weeks ago         0 B
    7. <none>              <none>              980fe10e5736        12 weeks ago        101.4 MB
    8. <none>              <none>              dea752e4e117        12 weeks ago        101.4 MB
    9. <none>              <none>              511136ea3c5a        8 months ago        0 B

    这会显示无tag镜像。当新构建的镜像占用这个镜像ID的repo:tag时,会出现这些图像,将其保留为或untagged。可以使用如下命令批量删除这类镜像:

    1. $ docker rmi $(docker images -f "dangling=true" -q)
    2.  
    3. 8abc22fbb042
    4. 48e5f45168b9
    5. bf747efa0e2f
    6. 980fe10e5736
    7. dea752e4e117
    8. 511136ea3c5a

    Labeled镜像

    label过滤匹配指定label的镜像。
    下面示例列出匹配com.example.version label的镜像。

    1. $ docker images --filter "label=com.example.version"
    2.  
    3. REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    4. match-me-1          latest              eeae25ada2aa        About a minute ago   188.3 MB
    5. match-me-2          latest              dea752e4e117        About a minute ago   188.3 MB

    下面示例列出匹配label名称为com.example.version,值为1.0的镜像。

    1. $ docker images --filter "label=com.example.version=1.0"
    2. REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    3. match-me            latest              511136ea3c5a        About a minute ago   188.3 MB

    Before

    before过滤出指定镜像之前创建的镜像。例如:

    1. $ docker images
    2. REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    3. image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
    4. image2              latest              dea752e4e117        9 minutes ago        188.3 MB
    5. image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

    使用before过滤将得到:

    1. $ docker images --filter "before=image1"
    2. REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    3. image2              latest              dea752e4e117        9 minutes ago        188.3 MB
    4. image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

    Since

    since过滤出指定镜像之后创建的镜像。例如:

    1. $ docker images
    2. REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    3. image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
    4. image2              latest              dea752e4e117        9 minutes ago        188.3 MB
    5. image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

    使用since过滤将得到:

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

    格式

    –format选项使用Go模板打印出指定格式的列表。
    Go模板的有效占位符如下所示:

  • .ID – 镜像ID
  • .Repository – 镜像存储库名称
  • .Tag – 镜像tag
  • .Digest – 镜像digest
  • .CreatedSince – 从镜像创建到现在过去的时间
  • .CreatedAt – 镜像创建的时间
  • .Size – 镜像硬盘占用大小
  • 当使用–format选项时,images命令输出模板声明的完全相同的数据,或者使用table指令,将包括列标题。
    如下显示无列标题的数据:

    1. $ docker images --format "{{.ID}}: {{.Repository}}"
    2. 77af4d6b9913: <none>
    3. b6fa739cedf5: committ
    4. 78a85c484f71: <none>
    5. 30557a29d5ab: docker
    6. 5ed6274db6ce: <none>
    7. 746b819f315e: postgres
    8. 746b819f315e: postgres
    9. 746b819f315e: postgres
    10. 746b819f315e: postgres

    显示带列标题的数据:

    1. $ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
    2. IMAGE ID            REPOSITORY                TAG
    3. 77af4d6b9913        <none>                    <none>
    4. b6fa739cedf5        committ                   latest
    5. 78a85c484f71        <none>                    <none>
    6. 30557a29d5ab        docker                    latest
    7. 5ed6274db6ce        <none>                    <none>
    8. 746b819f315e        postgres                  9
    9. 746b819f315e        postgres                  9.3
    10. 746b819f315e        postgres                  9.3.5
    11. 746b819f315e        postgres                  latest
    标签:Docker 发布于:2019-11-19 15:21:26