Docker的images命令
介绍
https://docs.docker.com/engine/reference/commandline/images/
默认的docker images 命令将显示所有顶级镜像,其存储库和标签,以及它们的大小。
Docker image具有中间层,通过允许缓存每个步骤来提高可重用性,减少磁盘使用并加速docker build。 默认情况下不显示这些中间层。
SIZE是镜像及其所有父镜像占用的累积空间。 这也是Docker save命令制作镜像时创建的Tar文件内容使用的磁盘空间。
如果镜像具有多个存储库名称或标记,则会多次列出该镜像。 此单个镜像(可通过其匹配的IMAGE ID识别)仅使用一次列出的SIZE。
使用
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.12.2 15e9da1ca195 3 months ago 96.5MB
k8s.gcr.io/kube-apiserver v1.12.2 51a9c329b7c5 3 months ago 194MB
k8s.gcr.io/kube-controller-manager v1.12.2 15548c720a70 3 months ago 164MB
<none> <none> b8988e488a42 6 months ago 733MB
envoyproxy/envoy-build-ubuntu 7f7f5666c72e00ac7c1909b4fc9a2121d772c859 936ba3592a5c 8 months ago 2.31GB
通过name和tag来列出镜像
docker images 命令有可选的 [REPOSITORY[:TAG]]
参数,该参数将列表限制为与参数匹配的镜像。
如果指定 REPOSITORY 但没有 TAG,则 docker images 命令会列出给定存储库中的所有图像。
$ docker images istio/pilot
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/pilot 0.7.1 6223c9364df7 10 months ago 51.9MB
$ docker images istio/*
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/istio-ca 0.7.1 5c82fea42c78 10 months ago 42.7MB
istio/mixer 0.7.1 251b0d3d2b93 10 months ago 54MB
6223c9364df7 10 months ago 51.9MB
istio/examples-bookinfo-reviews-v3 1.5.0 7301fee7c9cb 12 months ago 431MB
istio/examples-bookinfo-reviews-v2 1.5.0
$ docker images istio/*:0.7.1
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/istio-ca 0.7.1 5c82fea42c78 10 months ago 42.7MB
istio/mixer 0.7.1 251b0d3d2b93 10 months ago 54MB
istio/sidecar_injector 0.7.1 1db980725edb 10 months ago 33.4MB
过滤
过滤标志(-f
或--filter
)格式为"key=value"。 如果有多个过滤器,则传递多个标志(例如,--filter "foo=bar" --filter "bif=baz"
)
目前支持的过滤器是:
- dangling悬空 (boolean - true or false)
- label (
label=<key>
orlabel=<key>=<value>
) - before (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) - filter images created before given id or references - since (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) - filter images created since given id or references - reference (pattern of an image reference) - filter images whose reference matches the specified pattern
具体看官方文档。
dangling镜像的处理
dangling镜像就是images命令中出现的,REPOSITORY 和 TAG 都显示为 <none>
的镜像,如:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
......
<none> <none> b8988e488a42 6 months ago 733MB
可以通过过滤器将dangling镜像都找出来:
$ docker images --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> b8988e488a42 6 months ago 733MB
这将显示未标记的镜像,这些镜像是镜像树的叶子(不是中间层)。 当镜像的新构建从这个镜像ID取走 repo:tag
,而留下 <none>:<none>
或 untagged 时,会出现这些的镜像。如果在容器当前正在使用镜像时尝试移除镜像,则会发出警告。通过使用此标志,允许批量清理。
可以联合docker rmi
命令一起使用来批量删除dangling镜像:
docker rmi $(docker images -f "dangling=true" -q)
Deleted: sha256:b8988e488a42c652492c6b488f44469245d2088f793c1e6448777afcedb34ca1