Удаление данных Docker с использованием фильтров
В дополнение к удалению всех неиспользуемых данных, команда docker system prune
позволяет использовать фильтры для выборочного удаления объектов Docker. Это дает вам более детальный контроль над тем, что будет удалено.
Фильтры можно применять к различным типам объектов. Для команды docker system prune
можно фильтровать на основе таких критериев, как возраст объектов.
Создадим несколько дополнительных объектов Docker, чтобы продемонстрировать работу фильтров. Мы запустим несколько контейнеров и затем остановим их.
Запустим первый контейнер:
docker run -d --name oldcontainer ubuntu sleep 10
Этот контейнер будет работать в течение 10 секунд и затем завершится.
Запустим второй контейнер:
docker run -d --name newcontainer ubuntu sleep 20
Этот контейнер будет работать в течение 20 секунд и затем завершится.
Подождите, пока оба контейнера завершат работу. Вы можете проверить их статус с помощью команды docker ps -a
.
docker ps -a
Вы должны увидеть как oldcontainer
, так и newcontainer
со статусом "Exited".
Теперь используем фильтр для удаления только тех объектов, которые старше определенного времени. Мы можем использовать фильтр until
с указанием продолжительности. Например, чтобы удалить объекты, старше 5 секунд, можно использовать until=5s
.
Попробуем удалить объекты, старше 15 секунд. Это должно удалить oldcontainer
, но сохранить newcontainer
(при условии, что вы подождали достаточно долго, чтобы oldcontainer
завершил работу, но newcontainer
еще не).
docker system prune -f --filter "until=15s"
Посмотрите на вывод. Он должен показать, что oldcontainer
был удален, а newcontainer
должен остаться.
Проверьте контейнеры:
docker ps -a
Вы должны увидеть newcontainer
в списке, а oldcontainer
должен быть удален.
Теперь выполним удаление еще раз, на этот раз удалим объекты, старше 30 секунд. Это должно удалить и newcontainer
.
docker system prune -f --filter "until=30s"
Посмотрите на вывод. Он должен показать, что newcontainer
был удален.
Проверьте контейнеры еще раз:
docker ps -a
В списке не должно быть ни одного контейнера.
Фильтры предоставляют мощный способ настройки процесса удаления. Вы можете использовать разные ключи фильтра в зависимости от типа объекта, который вы удаляете (контейнеры, образы, тома, сети). Фильтр until
обычно используется для очистки объектов, которые не использовались в течение определенного времени.