Как удалить все контейнеры Docker: команды очистки системы

Если вы хоть раз работали с Docker, то точно сталкивались с ситуацией, когда система превращается в свалку из десятков (или сотен!) контейнеров, которые уже не нужны, но продолжают занимать место и мозолить глаза в списке docker ps -a. Особенно это актуально на dev-серверах, CI/CD-агентах или просто если любите “поиграться” с новыми образами. Так вот, сегодня разберёмся, как быстро и безопасно удалить все контейнеры Docker и почистить систему. Без лишней воды, только рабочие команды и советы с полей.

Зачем вообще чистить контейнеры?

  • Экономия места на диске. Контейнеры могут занимать гигабайты.
  • Избавление от “мусора” — старых, остановленных, ненужных инстансов.
  • Упрощение навигации: меньше контейнеров — меньше путаницы.
  • Безопасность: забытый контейнер с открытым портом — потенциальная уязвимость.

Что потребуется

  • ОС: Подойдёт Linux (Ubuntu, CentOS, Debian), macOS, Windows (WSL2 или Docker Desktop).
  • Железо: Любое, где Docker уже установлен и работает.
  • Права: Доступ к терминалу с правами пользователя, который может выполнять docker (обычно sudo).
  • Установленный Docker: Официальная инструкция

Установка Docker (если вдруг ещё нет)

  1. Для Ubuntu/Debian:
    sudo apt update
    sudo apt install docker.io
    sudo systemctl enable --now docker
  2. Для CentOS:
    sudo yum install docker
    sudo systemctl enable --now docker
  3. Для macOS/Windows — качаем Docker Desktop и ставим по инструкции.
  4. Проверьте, что всё работает:
    docker --version

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

Вот тут начинается самое интересное. Есть разные способы, от “снести всё к чертям” до более аккуратных. Давайте по порядку.

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

docker container prune

Эта команда удалит только те контейнеры, которые не запущены. Вас попросят подтвердить действие (Y/n).

Удалить все контейнеры (и запущенные, и остановленные)

docker rm -f $(docker ps -aq)
  • docker ps -aq — выводит ID всех контейнеров.
  • rm -f — удаляет контейнеры, даже если они запущены (останавливает и удаляет).

Будьте осторожны: это снесёт всё, что есть.

Удалить только конкретные контейнеры

docker rm -f container_id_1 container_id_2

Можно подставить имена или ID контейнеров, которые хотите удалить.

Удалить все контейнеры и образы, и volume

docker system prune -a --volumes

Это удалит всё: остановленные контейнеры, неиспользуемые образы и тома. Очень мощная команда, используйте с пониманием!

  • -a — удаляет все неиспользуемые образы, не только dangling.
  • --volumes — добавляет удаление неиспользуемых томов.

Ошибки и как делать не надо

  • Удалять всё бездумно на продакшене. Никогда не запускайте docker rm -f $(docker ps -aq) или docker system prune -a на продуктивных серверах — потеряете ВСЁ.
  • Не проверять, что удаляете. Перед удалением проверьте список контейнеров: docker ps -a.
  • Удалять тома без бэкапа. В томах могут лежать данные — бэкапните, если не уверены.
  • Скрипты с rm -rf /var/lib/docker. Не удаляйте руками папки Docker — это может поломать демона и привести к багам.

Реальный пример из жизни

У меня на CI-агенте (GitLab Runner) за месяц тестов накопилось 500+ остановленных контейнеров и 30ГБ занятых томов. Система стала тормозить, появлялись ошибки “no space left on device”. Решение:

# Удаляем все остановленные контейнеры
docker container prune -f

# Чистим неиспользуемые образы и volume
docker system prune -a --volumes -f

Освободил 28ГБ и ускорил работу runner’а. А главное — теперь это в кроне раз в неделю!

Заключение

Docker — крутая штука, но требует регулярной уборки. Не ленитесь — чистите контейнеры, образы и тома, особенно на dev-серверах и CI. Используйте docker container prune для быстрой уборки, а docker system prune -a --volumes для тотального ресета. И не забывайте: осторожность — наше всё!

Официальная документация Docker по теме:

Если остались вопросы — не стесняйтесь спрашивать в комментах или на Stack Overflow!

Хотите прочитать больше про Администрирование?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *