Якщо ви працюєте з Docker, то вже, мабуть, знаєте, що він не видаляє старі об’єкти самостійно, аби ви випадково не втратили дані. Через це зупинені контейнери, невикористовувані образи, томи та кеш збірок швидко забивають диск.
У цьому гайді розберемо, як повернути ваш дисковий простір, очистивши Docker.
Точкове прибирання ресурсів
Якщо потрібно звільнити місце, не зачіпаючи суміжні проєкти та робочі дані, використовуйте спеціальні команди prune для кожного типу об’єктів.
Images
docker image prune видаляє лише dangling-образи — ті, що втратили теги й не прив’язані до жодного контейнера:
docker image prune
Щоб видалити всі образи, які не використовуються запущеніми чи зупиненими контейнерами, додайте прапор -a:
docker image prune -a
За допомогою фільтра можна вилучити лише ті образи, які створено понад 24 години тому:
docker image prune -a --filter "until=24h"
Containers
Зупинений контейнер зберігає свій записуваний шар, який продовжує займати простір на диску. Для їх видалення використовуйте:
docker container prune
Фільтрація за часом працює аналогічно:
docker container prune --filter "until=24h".
Volumes
Docker ніколи не видаляє томи автоматично, оскільки вони містять дані (бази даних, конфіги, завантажені файли). Очистити томи, які не прив’язані до жодного контейнера, можна такою командою:
docker volume prune
Якщо потрібно зберегти конкретний том, використовуйте фільтр з мітками:
docker volume prune --filter "label!=keep"
Networks
Невикористовувані мережі майже не займають місця на диску, але створюють зайві записи в iptables та пристроях bridge. Видалити їх можна командою:
docker network prune
Build Cache
Кеш docker build часто є головною причиною переповнення диска при частій розробці. Прибрати невикористовуваний кеш для поточного білдера можна отак:
docker buildx prune
Щоб видалити весь кеш (включно із проміжними шарами та внутрішніми образом), додайте прапор --all:
docker buildx prune --all
Soft Cleanup
Якщо немає потреби вичищати кожен ресурс окремо, використовуйте універсальну команду docker system prune. Вона дозволяє прибрати накопичене сміття в один крок.
Базова очистка
Завдякі команді нижче ви видалите:
- всі зупинені контейнери;
- мережі, які не використовуються бодай одним контейнером;
- усі dangling-образи без тегів;
- невикористовуваний кеш збірок.
docker system prune
Томи не видаляються, щоб ви не втратили важливі дані (наприклад, бази даних чи завантажені файли).
Повна очистка
Щоб вилучити взагалі всі образи, які зараз не задіяні в запущених контейнерах, а також від’єднані томи даних, додайте прапори -a та --volumes:
docker system prune -a --volumes
Виконуйте docker system prune -a --volumes 1-2 рази на місяць або додайте прапор --filter "until=24h", щоб не видаляти нещодавно створені локальні ресурси.
Повне скидання налаштувань
Якщо робоче середовище зламалося, локальні контейнери конфліктують, або вам потрібне абсолютно чисте оточення — використайте цю інструкцію.
Крок 1. Примусово зупинити й видалити всі контейнери
Спочатку зупиняємо всі запущені контейнери (включаючи фонові) та видаляємо їх:
# Зупинити всі контейнери docker stop $(docker ps -aq)
# Видалити всі контейнери docker rm $(docker ps -aq)
Крок 2. Видалення всіх образів, томів та мереж
Аби зробити це, виконайте дії, що перераховані нижче:
# Примусово видалити всі образи docker rmi -f $(docker images -aq)
# Видалити всі томи docker volume rm $(docker volume ls -q)
# Видалити всі створені мережі docker network rm $(docker network ls -q)
Крок 3. Повне скидання системного стану Docker (для Linux)
Цей крок повністю знищує внутрішні директорії Docker, включаючи системні кеші, шар containerd та конфігураційні файли. Використовуйте тільки у крайньому випадку.
# Зупиняємо службу Docker sudo systemctl stop docker
# Видаляємо всі системні файли та кеші sudo rm -rf /var/lib/docker /var/lib/containerd
# Запускаємо службу наново sudo systemctl start docker
Після перезапуску демон Docker створить нову, повністю чисту структуру системних каталогів.
Післяслово
Використовуйте точкове прибирання щотижня, не забувайте про прапор –rm під час запуску тимчасових контейнерів, і Docker працюватиме швидко та передбачувано.
А якщо ви прагнете не просто запам’ятати кілька команд, а розібратись у принципі роботи Docker — запрошуємо на онлайн-курс від ITEDU. Він допоможе опанувати все необхідне лише за 3 тижні та систематизувати знання.
Успіхів!

