я могу написать
docker images --filter "dangling=true"
Какие еще фильтры я могу использовать?
Я могу использовать что-то подобное?
docker images --filter "running=false"
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
docker images -f "reference=*/*/*latest"
- Это даст вам что-нибудь подобноеk8s:30000/github/someImage:latest
. илиdocker images -f "reference=*/*latest"
достанет тебяk8s:30000/someImage:latest
. если вы хотите убрать их -docker rmi $(docker images -f "reference=*/*/*latest" -q --no-trunc)
Вы также можете использовать
REPOSITORY
аргументdocker images
для фильтрации изображений.Например, предположим, что у нас есть изображения:
Мы можем явно фильтровать все изображения с заданным именем:
Docker также поддерживает подстановку:
Официальные документы здесь .
источник
*
подстановочный знак не применяется к/
имени репозитория. Следовательно, в последнем примере для перечисления всех изображений с тегомlatest
командаdocker images --filter=reference='*:latest'
неверна. Правильная команда естьdocker images --filter=reference='*/*:latest'
.--filter name=something
- и все это время было простым решением было то, что вам вообще не нужен (n явный) фильтр!openapitools/openapi-generator-cli
, тоdocker images open*
не найдете его. Ноdocker images open*/*
найду.В Docker v1.7:
В настоящее время поддерживаются следующие фильтры:
true
илиfalse
)label=<key>
илиlabel=<key>=<value>
)источник
before=<image-name>[:tag]|<image-id>|<image@digest>
&since=(<image-name>[:tag]|<image-id>|<image@digest>)
Для меня,
сделали свое дело. Команда date может производить вывод в том же формате через
что позволяет мне сравнивать отметки времени. Однако для удобства я все еще использую фильтр для висящих изображений.
источник
Для очистки старых остановленных контейнеров вы можете использовать:
docker container prune
Для удаления немаркированных изображений вы можете использовать:
docker image prune
источник
Еще один пример, работающий с версией 17.09 ++:
Пояснение:
reference
- мы ссылаемся на изображения по имени репозитория;dangling=true
- удаляем немаркированные изображения;-q
- означает тихо, показывая только числовые идентификаторы изображений, а не целую строку.Эта команда удаляет все изображения с именем репозитория "registry.gitlab.com/example-app" и без тегов (с
<none>
без тегов в столбце тегов).Ссылка для справки: https://docs.docker.com/engine/reference/commandline/images/#filtering
источник
Чтобы добавить к исходному ответу о том, как использовать фильтр изображений, просто добавьте вариант использования для аналогичного сценария.
Мой конвейер CI перестраивает докеры и помечает их последним номером фиксации каждый раз , отправляет их в репозиторий докеров.
Однако это приводит к появлению остаточных и неиспользуемых / нежелательных образов на машине сборки CI. В качестве пост-шага мне нужно очистить их все, даже те, которые собираются только что, но в то же время я хочу оставить мои базовые загруженные изображения (такие как OpenJDK, PostGre) не удаленными, чтобы избежать загрузки каждый раз
LABEL built=XYZ
docker images --quiet --filter label=built=XYZ
docker rmi -f $(docker images --quiet --filter label=built=XYZ)
источник
К вашему сведению, без фильтра, но для удаления всех изображений при использовании в качестве тестирования или обучения,
образ докера rm -f $ (образ докера ls)
Приветствия.
источник