Как удалить образы, контейнеры и тома Docker — Simple-Server

    Команда Simple-Server
    03.06.2026
    8 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Сначала приведем команду, которая удаляет всё, включая и так называемые «висячие» объекты:

    А для удаления остановленных объектов потребуется флаг -a, вот так:

    Не используемые более образы уничтожаются так:

    Эта команда включает также дочерние образы и метаданные.

    Теперь избавляемся от всех контейнеров:

    И, наконец, убираем тома:

    Чтобы убедиться, что вы удаляете правильные объекты, задействуйте флаги****--dry-run или -n для просмотра объектов без их фактического уничтожения. Кроме того, эти команды удаляют объекты без возможности восстановления. Поэтому перед выполнением приведенных выше (и ниже) инструкций удостоверьтесь, что вы понимаете, какие объекты будут удалены, и вы не удаляете что-то важное.

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

    Здесь рассмотрим основные инструкции по удалению определенного количества образов с заданными параметрами или без них.

    Удаляем определенные образы

    Для этого сначала вводим:

    Команда позволяет отобразить список всех Docker-образов, которые находятся на локальной машине, включая не используемые в данный момент. Флаг****-a указывает Docker на отображение всех имеющихся образов, а не только тех, которые были недавно созданы.

    Вместо Img __ подставьте название для удаления. Несколько названий следует указывать через пробел.

    Чтобы получить перечень неиспользуемых образов (такие объекты также называются «висячими»), вводим:

    docker images -f dangling=true

    Такие образы могут возникать при создании новых на основе старых с тем же именем, но без тега. В этом случае старый образ становится висячим и не используется. -f фильтрует объекты по различным критериям, в данном случае мы выполняем фильтрацию, задав dangling=true.

    Теперь для удаления неиспользуемых образов вводим:

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

    Для поиска образов, содержащих некоторый шаблон в их именах, введите:

    docker images -a | grep "pattern"

    _-a_ отображает все образы, в том числе неактивные и промежуточные. _grep_ фильтрует вывод, чтобы отобразить только те образы, в именах которых содержится указанный шаблон (соответственно, введите его вместо _"pattern"_, сохранив кавычки).

    А чтобы избавиться от них, введите:

    docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

    awk '{print $3}' отображает только третий столбец вывода, содержащий идентификаторы. xargs docker rmi нужен, чтобы передать идентификаторов в docker rmi, удаляющей данные образы. _xargs_ разбивает список идентификаторов образов на отдельные аргументы. Если вы пытаетесь удалить несколько образов, перечисляя их идентификаторы вручную, вы можете столкнуться с проблемой, если идентификаторы содержат пробелы или другие специальные символы. В этом случае использование _xargs_ более безопасно и удобно.

    Для удаления используемых образов введите:

    docker rm -f $(docker ps -a -q)

    Это остановит и уничтожит контейнеры перед удалением образов.

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

    Далее для удаления всех неактивных образов на локальной машине вводим:

    docker rmi $(docker images -a -q)

    Эта команда выводит список идентификаторов всех образов на локальной машине и передает его в качестве аргумента docker rmi, которая удаляет все Docker-образы без возможности восстановления. А чтобы удалить и активные, используемые контейнерами, вводим:

    docker rm -f $(docker ps -a -q)

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

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

    Удаляем определенные контейнеры

    Теперь вводим инструкцию для удаления:

    Для ее корректного использования замените Name_or_ID __ соответствующим количеством ID или имен (несколько объектов следует указывать через пробел).

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

    А для уничтожения всех объектов этого типа на локальной машине введите:

    docker rm $(docker ps -a -q)

    Удаляем контейнеры при выходе

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

    docker run --rm image_name

    Флаг --rm указывает Docker на удаление после остановки.

    Теперь небольшое пояснение. По умолчанию созданный контейнер остается на локальной машине после остановки. И если вы не хотите сохранять контейнер, то задействуйте флаг --rm. Это очень удобно при запуске временных контейнеров для выполнения какой-то задачи, например, запуска тестов, когда вы не хотите оставлять за собой «мусор». А для сохранения данных помогут такие флаги, как -v для монтирования томов или -e для передачи переменных среды.

    Удаляем все запущенные контейнеры

    docker ps -a -f status=exited

    Флаг -f status=exited здесь фильтрует вывод.

    Теперь для удаления вводим:

    docker rm $(docker ps -a -f status=exited -q)

    Удаляем контейнеры по нескольким фильтрам

    Чтобы вывести контейнеры со статусами exited (остановлены) и created (созданы), то есть не запущенные и не работающие в данный момент, введите:

    docker ps -a -f status=exited -f status=created

    Флаги -a и -f здесь указывают Docker на отображение всех контейнеров и их фильтрацию.

    Теперь для удаления всех объектов, которые находятся в состояниях exited или created, введите:

    docker rm $(docker ps -a -f status=exited -f status=created -q)

    Для получения перечня контейнеров на локальной машине, а затем фильтрации списка, чтобы отобразить только те объекты, в именах которых есть определенный шаблон, введите, заменив "pattern" на нужный шаблон, сохраняя кавычки:

    docker ps -a | grep "pattern"

    Теперь для удаления объектов, в именах которых есть строка "pattern", вводим:

    docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

    Эта инструкция использует grep для фильтрации списка, awk '{print $1}' для извлечения первого столбца (идентификатора), а затем передает идентификаторы, используя xargs. Добавим, что docker ps -a | grep "pattern" может выводить не только имена, но и другую информацию: статус, ID и т.д. Поэтому для удаления объектов, в указанных параметрах которых есть строка "pattern", задействуйте инструкцию выше.

    Останавливаем и удаляем все контейнеры

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

    Она покажет информацию о каждом объекте: идентификатор, имя, статус, задействованные ресурсы и т.д.

    Для остановки всех контейнеров на локальной машине вводим:

    docker stop $(docker ps -a -q)

    И теперь удаляем их, вот так:

    docker rm $(docker ps -a -q)

    В завершающей главе рассмотрим основные инструкции по удалению определенного количества томов с заданными параметрами или без них.

    Удаляем определенные тома

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

    Команда выводит список имеющихся томов, включая информацию о них (ID, имена).

    Для удаления определенного числа томов с заданными именами введите, добавив имя нужного тома вместо vlm_name:

    docker volume rm vlm_name

    Эта команда принимает разное количество аргументов. Для удаления нескольких объектов перечислите их названия через пробел:

    docker volume rm my_volume1 my_volume2

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

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

    docker volume ls -f dangling=true

    Инструкция выводит их перечень, включая их ID и имена. Теперь можно избавиться от них, введя:

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

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

    Чтобы удалить тома, которые были созданы автоматически, вводим:

    docker rm -v container_name

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


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны