Удаление образов, контейнеров, томов и сети Docker

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

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

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

    Для того, чтобы взаимодействовать с контейнерами и изменять их текущее состояние, в том числе и удалять их, переходим на вкладку «Containers/Apps» веб-интерфейса Docker Desktop, выбираем нужный объект и применяем к нему выбранные нами действия.

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

    Для удаления контейнеров используется команда docker container rm или просто docker rm. Для наглядности будем использовать docker container rm с таким синтаксисом:

    docker container rm [параметры удаления] [ID объектов]
    • --force или -f: принудительное устранение контейнера (например, если он работает);
    • --link или -l: удалить указанную ссылку (например, между двумя объектами)*;
    • --volume или -v: удалить связанные с контейнером анонимные тома;

    Контейнеры изолированы друг от друга. Один из способов связи между ними — через сетевые порты. Используя флаг --link, вы удалите эту связь в сети Docker.

    Где взять ID? Для получения такой информации в арсенале командной строки имеется две команды: docker ps и docker container ls. Они имеют одинаковые параметры и синтаксис:

    • --all или -a: выводим все контейнеры. По умолчанию выводятся только запущенные;
    • --filter или -f: фильтр по набору флагов;
    • --format: формат вывода. Можно вывести не всю информацию, а только необходимую;
    • --last или -n: выводим последние n контейнеров;
    • --latest или -l: вывести последний контейнер;
    • --no-trunc: не обрезать вывод;
    • --quiet или -q: выводим только идентификаторы;
    • --size или -s: вывод общего размера;

    Манипулируя этими параметрами, пользователь может создать список контейнеров, которые он хочет удалить, после чего передать его ID команде docker container rm. Например, создать список объектов с флагами created или exited. Для это выполним эту команду для получения списка таких объектов:

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

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

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

    Для удаления запущенных контейнеров необходимо предварительно остановить их. Конечно, можно воспользоваться --force, но это может привести к повреждениям данных, с которыми работает приложение. Всегда лучше сначала остановить контейнеры с помощью команды docker stop. Чтобы в Docker удалить все контейнеры, достаточно этих двух команд:

    docker stop $(docker ps -a -q) docker container  rm $(docker ps -a -q)

    Существует отдельная команда, с помощью которой можно удалить все остановленные контейнеры: docker container prune.

    Как и контейнеры, образы Docker**** можно удалить внутри клиент-приложения. Для этого переходим на вкладку образов или «Images».

    Для удаления нажимаем в верхнем правом углу «Clean up…» и выбираем нужные нам образы.

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

    Теперь перейдем к инструментам командной строки.

    За удаление образов Docker отвечает две команды: docker rmi и docker image rm. Они идентичны и работают примерно также, как и docker rm. Вот их синтаксис:

    docker rmi [параметры удаления] [ID образов]
    • --force или -f: принудительно удалить образ;
    • --no-prune: не удалять непомеченные (не связанные по TAG) родителей;

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

    docker images [параметры] [REPOSITORY:[TAG]]

    У нее следующие параметры:

    • --all или -a: выводим все образы. По умолчанию промежуточные будут скрыты;
    • --digests: выводим дайджесты;
    • --filter или -f: фильтр по флагам;
    • --format: формат вывода;
    • --no-trunc: не обрезать вывод;
    • --quiet или -q: выводим только идентификаторы;

    Применение этих команд такое же, как и в предыдущем разделе этой статьи. Сначала мы запрашиваем нужный нам список образов и используем его как входной параметр для команды docker rmi. В качестве примера избавимся от образов, не привязанных к контейнерам. Для этого воспользуемся флагом dangling=true. Важно не забывать, что в этом случае мы получим несвязанные образы, т.е. без тегов:

    docker images --filter dangling=true

    После проверки списка мы можем с чистой совестью удалить его:

    docker rmi $(docker images --filter dangling=true -q)

    Для удаления всех неиспользуемых образов предусмотрена команда docker image prune.

    Том — это файловая система за пределами контейнеров, размещенная на хост-машине. Чтобы освободить пространство на диске от них, переходим в раздел «Volumes» и в правом верхнем углу выбираем иконку удаления.

    За удаление томов в командной строке отвечает docker volume rm с таким синтаксисом:

    docker volume rm [параметры] [имена томов]

    На параметры эта команда не щедра и предоставляет лишь принудительное удаление с помощью флага --force или -f. Удалить можно только те тома, что не связаны с работающими контейнерами. Использовать принудительное удаление нежелательно для томов, связанных с работающими контейнерами, поскольку это может привести к повреждению данных.

    Для того, чтобы узнать имена томов, воспользуемся командной docker volume ls. Синтаксис следующий:

    docker volume ls [параметры]

    И снова докер оказывается жадным на параметры. Предусмотрено 3 параметра:

    • --filter или -f: фильтр по флагам;
    • --format: формат вывода;
    • --quiet или -q: выводим только имена.

    Тома существуют вне контейнеров и после их удалении остаются в файловой системе хоста и становятся несвязанными. Попробуем удалить такие тома. Для этого воспользуемся флагом dangling=true:

    docker volume ls -f dangling=true

    Теперь передаём результаты в команду для их удаления:

    docker volume rm $(docker volume ls -f dangling=true -q)

    Но можно обойтись и другой командой для удаления таких томов: docker volume prune. Она удаляет все неиспользуемые тома. Однако, перед использованием, всё же стоит проверить список и убедиться в нём.

    Если вам нужно избавиться от безымянного тома, то его можно удалить вместе с его контейнером. Для этого при выполнении docker rm необходимо добавить параметр -v.

    Чтобы удалить сети, необходимо воспользоваться командой docker network rm с таким синтаксисом:

    docker network rm [Имена/ID сетей]

    У этой команды параметры отсутствуют. Ей можно передавать как имена, так ID. Для того, чтобы узнать имена и ID сетей, необходимо воспользоваться docker network ls:

    docker network ls [параметры]
    • --filter или -f: фильтр по флагам;
    • --format: формат вывода;
    • --no-trunc: не обрезать вывод;
    • --quiet или -q: выводим только идентификаторы;

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

    docker ps -f network=[ID сети]

    После этого можно перейти непосредственно к удалению сети. Попробуем удалить сети со значением driver=bridge:

    docker network ls -f driver=bridge docker network rm $(docker network ls -f driver=bridge -q)

    Бонус: очистка Docker от всех объектов

    Это довольно актуальная задача. Порой, для того, чтобы вернуть приложение в исходное состояния, приходится его удалять и заново устанавливать. Вместо того, чтобы удалить Docker, можно составить перечень команд, которые позволят очистить его от всех объектов и работать с ним, как с новым:

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

    docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) docker rmi $(docker images -a -q) docker volume rm $(docker volume ls -q) docker network rm $(docker network ls -q)

    Нужен сервер для практики? Закажите 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

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