Гид по технологиям

Проверка и очистка использования диска Docker

5 min read Docker Обновлено 01 Dec 2025
Проверка и очистка использования диска Docker
Проверка и очистка использования диска Docker

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

Быстрые ссылки

  • Быстрая проверка
  • Очистка образов Docker
  • Проверка использования контейнеров в работе
  • Отладка точек монтирования (bind и volume)
  • Очистка (prune) контейнеров и томов
  • Ручная отладка внутри контейнера

О чём эта инструкция

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

Важно: никогда не удаляйте контейнеры/тома, если они содержат критичные данные, без резервного копирования.


Быстрая проверка

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

docker system df

Эта команда показывает:

  • объём, занимаемый образами (images);
  • объём, занимаемый контейнерами (containers) с учётом их изменений;
  • объём, занимаемый томами (volumes);
  • объём, занимаемый билд-кешем (build cache).

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

du

Пример получения размера каталога Docker на Linux:

sudo du -sh /var/lib/docker/

Пояснение: docker system df не отображает данные, находящиеся в bind-монтах напрямую на хосте. Если контейнеры пишут в директории хоста через bind, их размер будет виден только через du на соответствующей директории.


Очистка образов Docker

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

Посмотреть все образы:

docker image ls

Список Docker образов с колонками REPOSITORY, TAG, IMAGE ID, SIZE

Советы:

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

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

docker image prune -a

Удалить конкретный образ по ID:

docker image rm 3a8d8f76e7f8f

Когда использовать: регулярно удаляйте старые образы на CI/CD-агентах и промежуточные образы после сборки.


Проверка использования запущенных контейнеров

Контейнеры могут занимать место несколькими способами:

  • подлежащий образ (shared image): общая часть, переиспользуется;
  • слой изменений контейнера: если контейнер пишет файлы в свою файловую систему (например, логи), это уникально для контейнера;
  • тома (volumes): данные хранятся отдельно и не относятся к UnionFS контейнера;
  • bind‑маунты: директории хоста, доступные контейнеру напрямую.

Команда, показывающая размер для каждого контейнера:

docker ps --size

Пример вывода docker ps --size с нулевыми размерами для контейнеров, использующих bind mounts

Пояснение по колонкам:

  • SIZE: объём, занятный изменениями контейнера (включает уникальные слои);
  • VIRTUAL SIZE: включая общий образ и слои — показывает «виртуальный» объём.

Если контейнеры используют только bind‑маунты на хосте, то в SIZE может быть 0 B — потому что данные хранятся вне Docker storage.


Отладка точек монтирования (bind и volumes)

Для определения, где именно находятся тома или bind‑маунты контейнера, используйте docker inspect и смотрите поле Mounts.

Получить информацию о монтировании конкретного контейнера:

docker container ls

Затем для выбранного ID:

docker inspect a1c904020044 -f '{{json .Mounts}}'

Пример вывода (JSON):

[{"Type":"bind","Source":"/home/daemon-data/921ff235-5075-4d64-b977-8d02cc3dacc9","Destination":"/home/container","Mode":"","RW":true,"Propagation":"rprivate"}]

После того как вы узнали путь (Source), проверьте размер уже на хосте:

sudo du -sh /path/to/mount/

Полезно: если том — это docker-managed volume, его физическое расположение обычно внутри /var/lib/docker/volumes/NAME/_data.


Очистка (prune) контейнеров и томов

Docker по умолчанию не удаляет контейнеры и тома автоматически (за исключением контейнеров с флагом –rm). Чтобы убрать неиспользуемые объекты, используйте команды prune:

docker container prune
docker volume prune

Эти команды запросят подтверждение перед удалением. Для автоматизации можно добавить флаг -f.

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


Ручная отладка внутри контейнера

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

Открыть оболочку контейнера:

sudo docker exec -it containerID /bin/bash

Внутри контейнера выполнить:

sudo du -sh /

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


Методология быстрого расследования (шаги)

  1. Запустите docker system df для быстрого обзора.
  2. Посмотрите docker ps –size, чтобы увидеть контейнеры с изменениями.
  3. Для подозрительных контейнеров выполните docker inspect и найдите Mounts.
  4. На хосте проверьте du -sh для каждого bind/volume.
  5. Если нужно освободить место — удалите ненужные образы и выполните docker image prune -a и docker volume prune.
  6. Перед удалением томов убедитесь в наличии резервных копий.

Чек-листы по ролям

DevOps / SRE:

  • Выполнить docker system df; сохранить вывод в лог.
  • Проверить старые образы: docker image ls и image prune -a при необходимости.
  • Проверить тома: docker volume ls и docker volume prune.
  • Настроить регулярный процесс очистки на CI/CD агентах.

Разработчик:

  • Убедиться, что dev-контейнеры не оставляют большие логи.
  • Использовать bind mounts для данных, которые не должны храниться в образе.
  • Очищать локальные образы после тестов.

Системный админ:

  • Мониторить заполнение /var/lib/docker и корневого раздела.
  • Настроить алерты на свободное место.
  • Понять, какие тома содержат важные данные и обеспечить бэкап.

Решающее дерево (как выбрать действие)

flowchart TD
  A[Высокая загрузка диска?] -->|Да| B[Проверить docker system df]
  A -->|Нет| Z[Наблюдать]
  B --> C{Что занимает?}
  C -->|Образы| D[Посмотреть docker image ls]
  C -->|Контейнеры/слои| E[Посмотреть docker ps --size]
  C -->|Тома/Bind| F[docker inspect -> du на хосте]
  D --> G[Удалить старые образы или image prune -a]
  E --> H[Inspect контейнеров, убрать ненужные]
  F --> I[Очистить тома или освободить место в bind директориях]
  G --> End[Проверка и мониторинг]
  H --> End
  I --> End

Критерии приёмки

  • Выяснена основная причина использования диска (образ/контейнер/том/bind).
  • Освобождено пространство без потери нужных данных.
  • Выполнено резервное копирование/экспорт критичных томов перед удалением.
  • Настроен мониторинг/процедура для предотвращения повторения.

Частые ошибки и когда этот подход не сработает

  • Если данные находятся на удалённом NAS, du на локальном хосте покажет только точку монтирования, но причину может скрывать сам NAS — проверяйте сторону хранения.
  • Принудительное удаление томов может вызвать потерю данных приложений. Всегда убеждайтесь, что том не используется.
  • На системах с нестандартной директорией Docker (не /var/lib/docker) команды du следует выполнять для реального пути хранения.

Сводка

  • docker system df — ваш быстрый обзор использования диска Docker.
  • du на хосте показывает фактический размер bind и volume путей.
  • docker image prune -a и docker volume prune безопасно удаляют неиспользуемые артефакты.
  • Всегда делайте бэкапы критичных томов и настраивайте мониторинг свободного места.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство