我可以写
docker images --filter "dangling=true"
我可以使用哪些其他过滤器?
我可以使用这样的东西吗?
docker images --filter "running=false"
答案 0 :(得分:59)
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
答案 1 :(得分:21)
您还可以使用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还支持globbing:
$ 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
答案 2 :(得分:11)
在Docker v1.7中:
目前支持的过滤器是:
true
或false
)label=<key>
或label=<key>=<value>
)答案 3 :(得分:5)
对我来说,
x = 0xF8A0C001
做了这个伎俩。 date命令可以通过
以相同的格式生成输出docker images -q | while read IMAGE_ID; do
docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done
允许我比较时间戳。不过,为了方便,我仍然使用滤镜来悬挂图像。
答案 4 :(得分:3)
sudo docker images --filter“running = false”
要清理旧的已停止的容器,您可以使用:
docker container prune
要删除未标记的图像,您可以使用:
docker image prune
答案 5 :(得分: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
答案 6 :(得分:0)
要添加有关如何使用图像过滤器的原始答案,只需为类似场景添加用例。
我的 CI 管道每次都会重新构建 docker 并用最后提交编号标记它们,然后将它们发送到 docker 存储库。
然而,这会导致 CI 构建机器上的残留和未使用/不需要的图像。 作为后期步骤,我需要将它们全部清理干净,即使是刚刚构建的那些,但同时,希望不删除我的基本下载图像(例如 OpenJDK、PostGre)以避免每次下载>
LABEL built=XYZ
docker images --quiet --filter label=built=XYZ
docker rmi -f $(docker images --quiet --filter label=built=XYZ)
答案 7 :(得分:0)
在 Powershell 中使用此示例:
docker images --format "{{.Repository}}:{{.Tag}}" | findstr "some_name"
要删除图像,您可以将其与删除命令结合使用,如下所示:
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "some_name")
答案 8 :(得分:-1)
仅供参考,不带过滤器,但当您用作测试或学习时删除所有图像,
docker image rm -f $(docker image ls)
问候。