Вступ
За допомогою Docker можна легко помістити ваші програми та сервіси у контейнери, які можна запускати будь-де. Однак, працюючи з Docker, дуже легко накопичити надмірну кількість невикористовуваних образів, контейнерів і томів даних, які захаращують вивід і займають місце на диску.
Docker надає всі необхідні інструменти для очищення системи з командного рядка. Цей посібник у вигляді шпаргалки містить короткий довідник команд, які допоможуть звільнити місце на диску і впорядкувати систему, видаливши невикористовувані образи, контейнери та томи Docker.
Як користуватися цим посібником:
- Цей посібник у форматі шпаргалки з окремими фрагментами консольних команд.
- Переходьте до будь-якого розділу, який відповідає вашому завданню.
Видалення образів, контейнерів, томів і мереж, які не використовуються або "зависли"
У Docker є єдина команда, яка очистить усі ресурси - образи, контейнери, томи та мережі - що зависли (не позначені тегами або не пов'язані з контейнером):
docker system prune
Щоб додатково видалити всі зупинені контейнери та всі невикористані образи (а не лише ті, що зависли), додайте до команди параметр -a
:
docker system prune -a
Видалення образів Docker
Видалення одного або кількох конкретних образів
Скористайтеся командою docker images
з параметром -a
, щоб знайти ідентифікатор зображень, які ви хочете видалити. У результаті буде виведено кожен образ, включно з проміжними шарами образів. Коли ви знайдете образи, які потрібно видалити, ви можете передати їхні ідентифікатори або теґи до docker rmi
.
Вивести список:
docker images -a
Видалити:
docker rmi Image Image
Видалення образів, що зависли
Образи в докері складаються з декількох шарів. Завислі образи - це шари, які не мають відношення до жодного з помічених образів. Вони більше не виконують жодної ролі та займають місце на диску. Їх можна знайти, додавши до команди docker images прапорець фільтра -f
зі значенням dangling=true
. Якщо ви впевнені, що хочете їх видалити, скористайтеся командою docker images prune
:
Примітка: Якщо ви збираєте образ, не позначивши його тегом, він з'явиться у списку завислих образів, оскільки не матиме зв'язку з іншими, позначеними тегом образами. Ви можете запобігти цій ситуації, вказавши тег під час збірки, а також додати тег до образу заднім числом за допомогою команди docker tag
.
Вивести список:
docker images -f dangling=true
Видалити:
docker image prune
Видалення зображень за шаблоном
Ви можете знайти всі зображення, які відповідають шаблону, за допомогою комбінації docker images
та grep
. Після того, як ви впевнилися, ви можете видалити їх за допомогою awk
, передавши ідентифікатори docker rmi
. Зауважте, що ці утиліти не постачаються Docker і не обов'язково доступні на всіх системах:
Вивести список:
docker images -a | grep "pattern"
Видалити:
docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Видалення всіх образів
Можна вивести список усіх образів Docker у системі, додавши -a
до команди docker images
. Якщо ви впевнені, що хочете видалити їх усі, ви можете додати прапорець -q
, щоб передати ідентифікатор образу команді docker rmi
:
Вивести список:
docker images -a
Видалити:
docker rmi $(docker images -a -q)
Видалення контейнерів
Видалення одного або декількох конкретних контейнерів
Скористайтеся командою docker ps
з параметром -a
, щоб знайти назву або ідентифікатор контейнерів, які ви хочете вилучити:
Вивести список:
docker ps -a
Видалити:
docker rm ID_or_Name ID_or_Name
Видалення контейнера при завершенні роботи
Якщо під час створення контейнера ви знаєте, що після завершення роботи ви не захочете його зберігати, ви можете запустити docker run --rm
для автоматичного видалення контейнера після завершення роботи:
docker run --rm image_name
Видалення всіх зупинених контейнерів
Ви можете знайти контейнери за допомогою docker ps -a
і відфільтрувати їх за статусом: created
, restarting
, running
, paused
, або exited
. Щоб переглянути список завершених контейнерів, використовуйте параметр -f
для фільтрування за статусом. Якщо ви переконалися, що хочете видалити ці контейнери, скористайтеся параметром -q
, щоб передати їхні ідентифікатори команді docker rm
:
Вивести список:
docker ps -a -f status=exited
Видалити:
docker rm $(docker ps -a -f status=exited -q)
Видалення контейнерів за допомогою декількох фільтрів
Фільтри докера можна комбінувати, використовуючи прапорець фільтра з додатковим значенням. У результаті ви отримаєте список контейнерів, які задовольняють будь-яку з умов. Наприклад, якщо ви хочете видалити всі контейнери, позначені як створені (стан, який може виникнути, якщо ви запустили контейнер з невірною командою) або завершені, ви можете скористатися двома фільтрами:
Вивести список:
docker ps -a -f status=exited -f status=created
Видалити:
docker rm $(docker ps -a -f status=exited -f status=created -q)
Видалення контейнерів за шаблоном
Ви можете знайти всі контейнери, які відповідають шаблону, за допомогою комбінації docker ps
та grep
. Коли ви впевнені, що маєте список контейнерів, які хочете видалити, ви можете скористатися awk
і xargs
, щоб передати ідентифікатор докеру rm
.
Вивести список:
docker ps -a | grep "pattern”
Видалити:
docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm
Зупинка та видалення всіх контейнерів
Ви можете переглянути контейнери у вашій системі за допомогою команди docker ps
. Додавання параметра -a
покаже усі контейнери. Якщо ви впевнені, що хочете їх видалити, ви можете додати прапорець -q
, щоб передати ідентифікатори командам docker stop
і docker rm
:
Вивести список:
docker ps -a
Видалити:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Видалення томів
Видалення одного або кількох конкретних томів - починаючи з версії Docker 1.9 і вище
За допомогою команди docker volume ls
знайдіть назву тома, який ви бажаєте видалити. Потім ви можете вилучити один або декілька томів за допомогою команди docker volume rm
:
Вивести список:
docker volume ls
Видалити:
docker volume rm volume_name volume_name
Видалення завислих томів - починаючи з версії 1.9
Суть томів полягає у тому, щоб існувати незалежно від контейнерів, тому, коли контейнер видаляється, том не видаляється автоматично. Якщо том існує і більше не підключений до жодного контейнера, він називається "завислим" томом. Щоб знайти такі томи та підтвердити, що ви хочете їх видалити, ви можете скористатися командою docker volume ls
з фільтром, який обмежить результати пошуку до висячих томів. Якщо список вас влаштовує, ви можете видалити їх усі за допомогою команди docker volume prune
:
Вивести список:
docker volume ls -f dangling=true
Видалити:
docker volume prune
Видалення контейнера та його тому
Якщо ви створили том без назви, його можна видалити одночасно з контейнером за допомогою прапора -v
. Зауважте, що це працює лише з безіменними томами. Після успішного видалення контейнера буде показано його ідентифікатор. Зауважте, що видалення тома не супроводжується ніякими повідомленнями. Якщо він безіменний, його буде автоматично видалено з системи. Якщо він має ім'я, він не буде видалений.
docker rm -v container_name
Висновок
У цьому посібнику розглянуто деякі з найпоширеніших команд, що використовуються для видалення образів, контейнерів і томів у Docker. Існує багато інших комбінацій і параметрів, які можна використовувати з кожною з них. Докладні відомості про доступні можливості наведено у документації Docker для docker system prune
, docker rmi
, docker rm
та docker volume rm
.
Ще немає коментарів