До основного вмісту

Скільки місця займає 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 варто додавати лише після перевірки, які томи реально не використовуються.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці