я могу написать
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 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 также поддерживает подстановку:
$ 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
*
подстановочный знак не применяется к /
имени репозитория. Следовательно, в последнем примере для перечисления всех изображений с тегом 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>)
Для меня,
docker images -q | while read IMAGE_ID; do
docker inspect --format='{{.Created}}' --type=image ${IMAGE_ID}
done
сделали свое дело. Команда date может производить вывод в том же формате через
date -Ins --date='10 weeks ago'
что позволяет мне сравнивать отметки времени. Однако для удобства я все еще использую фильтр для висящих изображений.
sudo docker images --filter "running = false"
Для очистки старых остановленных контейнеров вы можете использовать:
docker container prune
Для удаления немаркированных изображений вы можете использовать:
docker image prune
Еще один пример, работающий с версией 17.09 ++:
sudo docker rmi $(sudo docker images -f=reference="registry.gitlab.com/example-app" -f "dangling=true" -q)
Пояснение:
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)