Фильтрация образов по статусу "висячих" (dangling)
На этом этапе вы научитесь фильтровать Docker-образы на основе их статуса "висячих" (dangling). Висячие образы - это слои, которые не имеют связи с какими-либо помеченными (tagged) образами. Они часто являются результатом сборки новых версий образа, в результате чего старые слои остаются без тега. Эти висячие образы занимают дисковое пространство и могут быть удалены.
Для фильтрации образов по их статусу "висячих" вы можете использовать флаг --filter
с ключом dangling
. Значением может быть true
, чтобы показать только висячие образы, или false
, чтобы показать только невисячие образы.
Сначала давайте создадим висячий образ. Мы можем сделать это, создав новый образ, который заменит существующий. Для этого мы используем простой Dockerfile.
Создайте файл с именем Dockerfile
в директории ~/project
со следующим содержимым:
FROM alpine
CMD ["echo", "Hello, world!"]
Этот Dockerfile очень простой. Он использует образ alpine
в качестве базового и просто выводит "Hello, world!" при запуске контейнера на его основе.
Теперь давайте создадим образ из этого Dockerfile и пометим его.
Выполните следующую команду, чтобы создать образ и пометить его как my-image:latest
:
docker build -t my-image:latest .
Вы должны увидеть вывод, указывающий на процесс сборки:
[+] Building
...
Successfully built <image_id>
Successfully tagged my-image:latest
Теперь давайте немного изменим Dockerfile и снова соберем его с тем же тегом. Это создаст новый образ с тегом my-image:latest
, и предыдущий образ с этим тегом станет висячим.
Отредактируйте Dockerfile
в директории ~/project
, чтобы изменить команду:
FROM alpine
CMD ["echo", "Hello again!"]
Теперь снова соберите образ с тем же тегом:
docker build -t my-image:latest .
Вы увидите вывод, аналогичный предыдущей сборке, но будет сгенерирован новый идентификатор образа. Предыдущий образ с тегом my-image:latest
теперь является висячим.
Давайте перечислим все образы, чтобы увидеть висячий образ.
Выполните команду:
docker images
Вы, возможно, увидите образ с <none>
в столбцах REPOSITORY и TAG. Это висячий образ.
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
<none> <none> <old_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Теперь давайте отфильтруем, чтобы показать только висячие образы, используя флаг --filter dangling=true
.
Выполните команду:
docker images --filter dangling=true
Вы должны увидеть только висячий образ:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> <old_image_id> <created_time> <size>
Чтобы увидеть только невисячие образы, вы можете использовать --filter dangling=false
.
Выполните команду:
docker images --filter dangling=false
Это перечислит все образы, которые не являются висячими:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-image latest <new_image_id> <created_time> <size>
hello-world latest <image_id> <created_time> <size>
Это демонстрирует, как фильтровать образы на основе их статуса "висячих".