yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Как удалить контейнеры и образы Docker

При регулярной работе с Docker неизбежно накапливаются неиспользуемые контейнеры, образы, тома и кэш сборки. Эти артефакты не только занимают дисковое пространство, но также могут замедлять операции Docker, увеличивать время развертывания и создавать проблемы безопасности из-за устаревших зависимостей. В этой статье мы рассмотрим проверенные методы очистки Docker-окружения, стратегии оптимизации образов и автоматизацию процессов поддержания порядка в вашей контейнерной инфраструктуре.

Инструкции
Иллюстрация для статьи на тему «Как удалить контейнеры и образы Docker»
Продукты из этой статьи:
Иконка-Evolution Artifact Registry
Evolution Artifact Registry

Удаление образов Docker

Коротко объясним, что такое образ Docker. Это шаблон с инструкциями для создания контейнера. Он включает код приложения, среду выполнения, зависимости и системные инструменты для запуска ПО. Создается такой образ с помощью Dockerfile

Удаление определенного образа

Инструкция по удалению конкретного Docker-образа с помощью идентификатора или имени:

  1. Получите список доступных образов с идентификаторами и именами с помощью команды docker images.

  2. Найдите в списке образ, который будете удалять. IMAGE ID — это уникальные идентификаторы, REPOSITORY — имена.

  3. Удалите образ командой docker rmi <image_id> или docker rmi <image_name>. Здесь image_id — идентификатор, <image_name> — имя. Пример команды с идентификатором — docker rmi a1b2c3d4e5f6, с именем — docker rmi ubuntu:latest. 

  4. Убедитесь, что удалили образ — выполните команду docker images снова. Если образа в списке нет, значит, все получилось. 

Удаление «висячих» образов

«Висячие» образы в Docker — элементы, которые больше не используются никакими контейнерами. Чтобы их удалить, используйте команду: 

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Появится список. В колонках REPOSITORY и TAG у «висячих» образов будет стоять <none>. 

Некоторые образы имеют теги, но не используются. Их вместе с «висячими» можно удалить с помощью команды: 

Применение команды docker image pruneПрименение команды docker image prune

Если нужно удалить только «висячие» образы, а не все неиспользуемые, примените команду с дополнительным флагом:

После удаления снова введите команду: 

Если команда не выдает результатов, значит, все «висячие» образы были успешно удалены.

Удаление образов по шаблону

В таблице собраны все способы применения шаблонов и фильтров для удаления определенных образов.

Описание
Команда
Удаление элементов с конкретным тегом
docker rmi $(docker images -q "my_image_name:latest")
Удаление образов, которые более 30 дней не использовались
docker image prune -a --filter "until=720h"
Удаление образов меньше 100 MB
docker images --filter "before=100m" -q
Удаление образов старше 30 дней, которые давно не использовались
docker image prune -a --filter "until=720h"
Удаление всех образов с определенным префиксом в имени
docker rmi $(docker images -q 'test_*')
Удаление всех образов, кроме одного
`docker rmi $(docker images -q)

Продвинутый метод: Интерактивный выбор образов и контейнеров для удаления с помощью fzf

Часто бывает сложно запомнить все ID и имена, особенно когда нужно выборочно удалить несколько старых или самых объемных образов. Команды с фильтрами мощны, но не всегда наглядны. Решить эту проблему помогает fzf (fuzzy finder) — универсальный интерактивный фильтр для командной строки.

Что такое fzf и как его установить

fzf — это инструмент, который работает как «поиск с нечетким соответствием». Он позволяет интерактивно искать и выбирать элементы из списка.

Установить его можно через менеджеры пакетов:

  • Для Ubuntu/Debian: sudo apt install fzf

  • Для macOS (с Homebrew): brew install fzf 

Интерактивное удаление образов

Следующая команда выведет список всех Docker-образов в удобном формате (с размерами!) и позволит вам интерактивно выбрать один или несколько для удаления.

Как это работает:

  1. docker images --format "table ..." — создает детализированную таблицу с ID, именем, тегом и размером образа.

  2. fzf -m — запускает интерактивный интерфейс, где вы можете искать образы по имени или тегу. Ключ -m позволяет выбрать несколько образов с помощью Tab.

  3. awk '{print $1}' — из всего выбранного выводит только первый столбец (IMAGE ID).

  4. xargs -r docker rmi — передает эти ID в команду docker rmi для удаления.

Интерактивное удаление контейнеров

Аналогичный подход применим и для контейнеров. Эта команда поможет вам выбрать и удалить контейнеры из списка всех (включая остановленные).

Использование fzf превращает рутинную задачу очистки в быстрый и контролируемый процесс, что особенно ценно в активно развивающихся проектах с большим количеством артефактов.

Удаление всех образов

Если нужно освободить дисковое пространство, полностью обновить систему и минимизировать риски безопасности, иногда приходится удалять все Docker-образы. В этом поможет команда:

Команда docker images -q выводит список ID всех образов системы, а docker rmi удаляет указанные образы.

После выполнения очистки локальных образов возникает стратегически важная задача — обеспечить надежное хранение актуальных и протестированных версий образов в централизованном реестре. Локальная очистка освобождает дисковое пространство, но одновременно создает риск безвозвратной потери рабочих версий приложений, особенно если удаленные образы не были предварительно загружены в удаленный репозиторий.

Для профессионального централизованного управления Docker-образами в корпоративной среде рекомендуется использовать специализированные решения класса Artifact Registry. Одним из таких решений является Evolution Artifact Registry — сервис корпоративного уровня, который обеспечивает:

  • Безопасное хранение артефактов с контролем доступа на уровне команд и проектов, что критично для соблюдения политик информационной безопасности.

  • Полное версионирование образов с возможностью отката к любой предыдущей версии, что незаменимо при необходимости быстрого восстановления работоспособности системы.

  • Быстрый доступ к артефактам для всей команды разработки благодаря распределенной инфраструктуре и кэшированию, что сокращает время развертывания.

  • Интеграцию с CI/CD-пайплайнами для автоматической публикации образов после успешной сборки.

  • Поддержку множественных форматов артефактов — помимо Docker-образов сервис работает с Helm-чартами, DEB и RPM-пакетами, что позволяет централизовать всю инфраструктуру хранения.

Централизованный реестр артефактов становится особенно критичным при работе с микросервисной архитектурой, где количество образов может исчисляться десятками и сотнями. Без надежного реестра команда рискует потерять возможность воспроизвести рабочую конфигурацию системы, что в продакшен-среде может привести к серьезным инцидентам и простоям.

Evolution Artifact Registry
Evolution Artifact Registry
Безопасно храните и распространяйте артефакты: Docker образы, Helm-чарты, DEB и RPM-пакеты.
Подробнее

Удаление контейнеров Docker

В этой главе рассмотрим различные подходы к удалению Docker-контейнеров — от выборочного удаления конкретных экземпляров до массовой очистки неиспользуемых и остановленных контейнеров.

Удаление определенного контейнера

Для начала работы с точечным удалением необходимо идентифицировать целевые контейнеры. Команда просмотра активных контейнеров:

Для получения полной картины, включая остановленные и завершенные контейнеры, используйте расширенную версию команды:

После идентификации контейнера через его уникальный идентификатор или понятное имя, выполните удаление одним из способов:

Замените <container_id> на реальный идентификатор контейнера, который можно предварительно найти в списке из команды docker ps -a.

Если намерены удалить контейнер по имени, используйте команду:

Замените <container_name> на имя контейнера.

Для принудительного удаления запущенного контейнера без предварительной остановки применяйте флаг принудительного выполнения:

Удаление контейнеров после их завершения

Для временных контейнеров, которые не требуют сохранения после выполнения своих задач, эффективно использовать флаг автоматического удаления. Этот параметр обеспечивает автоочистку контейнера сразу после его остановки:

Замените <image_name> на реальное имя. 

Удаление всех остановленных контейнеров

Для комплексного освобождения пространства от неработающих контейнеров сначала проанализируйте общую ситуацию:

Затем выполните команду массового удаления всех остановленных экземпляров:

Принцип работы данной команды:

  • docker ps -a -q извлекает идентификаторы всех контейнеров;

  • -f status=exited фильтрует только остановленные экземпляры;

  • docker rm $(...) выполняет удаление отфильтрованного списка. 

После выполнения операции рекомендуется проверить результат, повторно выполнив команду просмотра контейнеров, чтобы убедиться в успешности очистки и отсутствии нежелательных последствий.

Удаление контейнеров по шаблону

Для точного управления контейнерной инфраструктурой Docker предлагает мощные инструменты фильтрации, позволяющие выполнять выборочное удаление по различным критериям. В таблице ниже представлены наиболее эффективные методы целевой очистки.

Метод фильтрации
Описание
Пример команды
Фильтр по именам
Удаление контейнеров, чьи имена соответствуют заданному шаблону именования
docker rm $(docker ps -a -q --filter "name=web_")
Фильтр по состоянию
Очистка контейнеров с определенным статусом выполнения
docker rm $(docker ps -a -q --filter "status=exited")
Фильтр по идентификатору
Удаление по уникальному фрагменту ID контейнера
docker rm $(docker ps -a -q --filter "id=abc123")
Фильтр по временным меткам
Очистка контейнеров, созданных до или после указанной даты
docker rm $(docker ps -a -q --filter "before=2025-01-01")
Фильтр по меткам
Удаление контейнеров, помеченных определенными тегами
docker rm $(docker ps -a -q --filter "label=env=production")
Комбинированная фильтрация
Селективное удаление по нескольким критериям одновременно
docker rm $(docker ps -a -q --filter "status=exited" --filter "label=env=testing")
Быстрая очистка остановленных контейнеров
Мгновенное удаление всех завершивших работу контейнеров
docker container prune -f

Остановка и удаление всех контейнеров

Чтобы быстро остановить запущенные контейнеры и сразу их удалить, используйте подходящую команду из таблицы. 

Действие
Описание
Команда
Остановка всех контейнеров
Останавливает все работающие контейнеры. Команда выведет ID запущенных контейнеров. Данные будут переданы в команду docker stop
docker stop $(docker ps -q)
Удаление всех контейнеров (включая остановленные)
Удаляет все контейнеры, включая остановленные. docker ps -a -q выводит ID всех контейнеров — как работающих, так и остановленных
docker rm $(docker ps -a -q)
Остановка и удаление контейнеров в одном шаге
Останавливает все контейнеры, а затем удаляет их. Используется для выполнения двух операций одновременно
docker stop $(docker ps -q) && docker rm $(docker ps -a -q)
Удаление всех остановленных контейнеров
Удаляет только остановленные контейнеры, не затрагивая работающие. Предварительно можно использовать фильтр по статусу exited
docker rm $(docker ps -a -q --filter "status=exited")
Удаление всех остановленных контейнеров (без подтверждения)
Быстро удаляет все остановленные контейнеры без запроса на подтверждение с помощью флага -f
docker container prune -f

Дополнительные команды и советы

Чтобы еще эффективнее управлять ресурсами Docker, изучите инструменты и рекомендации для удаления томов и автоматизации очистки системы. 

Удаление томов Docker

Есть разные способы удалить тома, которые в Docker-системах используются для хранения данных. В таблице — основные команды. 

Действие
Описание
Команда
Просмотр всех томов
Показывает список всех томов Docker
docker volume ls
Просмотр только висячих томов
Показывает все «висячие» (dangling) тома, которые не используются контейнерами
docker volume ls -f "dangling=true"
Удаление конкретного тома
Удаляет конкретный том Docker по имени
docker volume rm
Удаление всех неиспользуемых томов
Удаляет тома, которые не привязаны к конкретным контейнерам
docker volume prune
Удаление всех томов (включая используемые)
Удаляет все тома Docker, включая те, которые используются контейнерами. Учтите, что в этом случае есть риск потери данных
docker volume rm $(docker volume ls -q)

Оптимизация дискового пространства: анализ и очистка сборок Docker Buildx Cache

При активной разработке с использованием Docker Buildx и multi-архитектурных сборок в системе накапливается кэш сборок, который может занимать десятки гигабайт. В отличие от стандартных образов, этот кэш часто остается «невидимым» при обычных командах очистки.

Как обнаружить скрытые данные сборок

Сначала оценим реальный объем данных: docker system df -v. Обратите внимание на раздел Build cache. Если он показывает значительный объем, пришло время для детального анализа.

Просмотр детализированного кэша сборок:docker buildx du --verbose

Стратегии очистки кэша: осторожная и агрессивная.

Осторожная (рекомендуется):

Агрессивная:

Инструменты для автоматизации очистки

Чтобы устранять все ненужные контейнеры, тома и образы, можно использовать комбинированный скрипт:

Чтобы регулярно очищать Docker-систему с минимальными усилиями, можно настроить задачу в планировщике Cron. Процессы удаления неиспользуемых ресурсов будут запускаться в определенное время. 

Откройте планировщик:

Добавьте строку для автоматической очистки каждый день, например, в полночь:

Для очистки и оптимизации Docker-систем можно пользоваться сторонними инструментами. В таблице перечислили самые распространенные. 

Инструмент
Описание
docker-gc
Утилита для автоматической очистки неиспользуемых контейнеров и образов. Выполняет очистку Docker-системы по настроенным критериям
LazyDocker
Инструмент с интерфейсом для управления Docker-контейнерами и образами с опциями для удаления неиспользуемых ресурсов
Portainer
Утилита с графическим интерфейсом для управления Docker-системами. Поддерживает удаление контейнеров, сетей и образов

Предупреждения и советы по безопасной практике при использовании команд удаления в Docker

При очистке систем Docker придерживайтесь следующих принципов:

  • Используйте только те команды, которыми хорошо владеете. 

  • Проверьте зависимости между образами и контейнерами, прежде чем что-то удалять.

  • Сделайте резервные копии важных данных на случай, если удалите лишнее.

  • Проверьте, не используются ли удаляемые данные другими компонентами системы.

  • Откажитесь от массового удаления ресурсов без предварительного анализа.

Заключение

Регулярная очистка Docker-систем — обязательная практика для поддержания производительности и безопасности инфраструктуры. Систематическое удаление неиспользуемых образов, контейнеров и томов помогает освободить дисковое пространство, ускорить работу системы и снизить риски безопасности.

Используйте проверенные команды для мониторинга и очистки ресурсов, настройте автоматизацию через Cron или сторонние инструменты для упрощения процесса. Не забывайте о резервном копировании важных данных перед массовым удалением и всегда проверяйте зависимости между компонентами системы. Следуя этим рекомендациям, вы сможете поддерживать Docker-окружение в оптимальном состоянии.

Продукты из этой статьи:
Иконка-Evolution Artifact Registry
Evolution Artifact Registry
28 октября 2025

Вам может понравиться