Site icon IT Education Center Blog – блог навчального центру DevOps – ITEDU by NETFORCE Group

Docker Cleanup: від кешу до повного скидання

Якщо ви працюєте з 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. Вона дозволяє прибрати накопичене сміття в один крок.

Базова очистка

Завдякі команді нижче ви видалите:

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 тижні та систематизувати знання.

Успіхів!

Exit mobile version