我有几个悬垂的图片(出现在下面的图片)。docker images
with none标签)。) 要清理它们,基于LABEL,通常的命令是。docker image prune -a --force --filter="label=some-key=some-value"
.
但是,这个命令不会修剪有容器关联的悬空图像。无论容器是启动还是停止。
我无法运行 docker container prune -f
因为我不想修剪所有停止的容器。有没有一个命令可以修剪图片和与图片相关的容器?基于图像标签?
给定一个带有label的图像(或图像),你要删除使用该图像的任何容器。
使用 xargs
和 ancestor
过滤器,你可以这样做。
docker image ls -q --filter "label=foo=bar" | \
xargs -I IMG docker ps -aq --filter "ancestor=IMG" | \
xargs docker rm -fv
虽然不完全是 "一条命令",但应该能让你达到目的
或者Powershell。
@(docker image ls -q --filter "label=foo=bar") | %{&"docker" ps -qa --filter "ancestor=$_"} | %{&"docker" rm -fv $_}