К основному содержимому

Сколько места занимает Docker на диске и как его вернуть

Облако и DevOps · 13.10.2026 · 4 мин чтения
Иллюстрация к статье «Сколько места занимает Docker на диске и как его вернуть»

Диск на сервере с Docker заканчивается быстрее, чем кажется логичным: контейнеры остановлены, образы вроде бы не используются, а места всё равно не хватает. Проблема не в самом Docker, а в том, что он по умолчанию ничего не удаляет сам — старые образы, остановленные контейнеры и неиспользуемые тома копятся до тех пор, пока администратор не вмешается вручную. Эта статья разбирает, куда уходит место и как его освободить, не повредив работающие сервисы.

Из чего складывается занятое Docker место на диске

Docker хранит данные в нескольких отдельных категориях, и каждая из них растёт по своей причине. Образы (images) занимают место слоями: каждый шаг в Dockerfile добавляет новый слой, и даже устаревшие версии образа остаются на диске, пока их явно не удалят. Контейнеры (containers), включая остановленные, хранят изменённый поверх образа слой и логи. Тома (volumes) содержат данные приложений и не удаляются вместе с контейнером по умолчанию — это сделано намеренно, чтобы не потерять базу данных при пересоздании контейнера. Кеш сборки (build cache) копится при каждой сборке образа и может занимать существенную часть диска независимо от того, сколько образов реально используется.

Как посмотреть, что именно занимает место

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

docker system df
docker system df -v

Первая команда показывает сводку по образам, контейнерам, томам и кешу сборки. Вторая добавляет подробный список по каждому объекту, включая то, используется он сейчас активным контейнером или просто занимает место без дела. Если сервер уже настроен по инструкции из статьи «Настройка Docker на VDS», эти команды доступны сразу после установки без дополнительных шагов.

Сравнение способов очистки диска от Docker-данных

КомандаЧто удаляетРиск для работающих сервисов
docker container pruneОстановленные контейнерыНизкий — работающие контейнеры не трогает
docker image pruneОбразы без тегов, не связанные ни с одним контейнеромНизкий при использовании без флага -a
docker image prune -aВсе образы, не используемые ни одним контейнеромСредний — удалит и нужные образы про запас
docker system prune --volumesКонтейнеры, образы, кеш сборки и неиспользуемые томаВысокий — тома могут содержать данные приложений

Если часть сервисов описана через docker-compose, после очистки полезно свериться с файлом конфигурации — порядок пересборки описан в статье «Настройка docker-compose».

Почему место пропадает снова после очистки

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

  • Логи контейнеров растут без ограничения, если в конфигурации Docker не задан лимит на размер лог-файла
  • CI/CD собирает новые образы на том же сервере, добавляя слои быстрее, чем старые успевают устареть
  • Тома с данными баз данных или очередей растут вместе с нагрузкой на сервис и не относятся к «мусору», который можно просто удалить

Отследить момент, когда место снова начинает заканчиваться, проще через постоянный контроль занятости диска — как его настроить, описано в статье «Мониторинг VDS».

Что делать: порядок безопасной очистки диска

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

  1. Посмотреть сводку через docker system df и определить, какая категория данных занимает больше всего места
  2. Удалить остановленные контейнеры командой docker container prune, если они больше не нужны для отладки
  3. Удалить неиспользуемые образы без флага -a в первый раз, чтобы не затронуть образы, которые ещё могут понадобиться
  4. Ограничить размер логов контейнеров в конфигурации Docker, чтобы место не заканчивалось снова тем же способом
  5. Настроить регулярную проверку свободного места на диске, а не разовую ручную очистку

Частые вопросы

Почему Docker занимает так много места на диске?

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

Сколько места на диске занимает Docker обычно?

Точный объём зависит от количества образов, частоты сборок и размера томов конкретного проекта, поэтому общего числа не существует — надёжнее один раз посмотреть реальную картину командой docker system df на своём сервере.

Безопасно ли выполнять docker system prune на рабочем сервере?

Сама команда без флага --volumes не трогает данные в томах и не останавливает работающие контейнеры, поэтому в базовом виде она достаточно безопасна. Флаг --volumes стоит добавлять только после проверки, какие тома реально не используются.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке