Блог компанії 3v-Hosting

Як видаляти образи, контейнери та томи в Docker

Адміністрування

9 хв.


Своєю появою в далекому 2013 році Docker зробив революцію в тому, як ми можемо розробляти, доставляти і запускати свої та не лише свої програми, використовуючи технологію контейнеризації. Нещодавно ми писали про те, як встановити Docker на сервер з ОС Ubuntu 22 та користуватися ним. Однак, якщо ми давно працюємо з Docker, наша система може накопичувати значну кількість образів, контейнерів і томів Docker, які нам більше не потрібні. Ці залишки можуть займати цінний дисковий простір і можуть викликати конфлікти. Тому дуже важливо знати, як ефективно видаляти ці артефакти Docker, про що й йтиметься у цій статті.

 

 

Що таке образи, контейнерів та томи в Docker

 

Перш ніж почати розбиратися з тим, як видаляти образи, контейнери та томи - нам важливо зрозуміти, що являє собою кожен із компонентів, з якими ми матимемо справу:

      Образи Docker: це шаблони, призначені виключно для читання та містять код програми та вказівки на всі її залежності. Образи використовують для створення контейнерів Docker. Їх можна завантажувати з Docker репозиторію, а також ділитися своїми образами, що містять вашу програму.
      Контейнери Docker: контейнери – це екземпляри образів Docker у стані роботи, запущені, тобто під час їх виконання. Це невеликі ізольовані середовища зі своїм набором програмного забезпечення, де працюють програми.
      Тома Docker: томи використовуються для збереження даних, що згенеровані та використовуються контейнерами Docker, навіть після їх вимкнення. Можна уявити собі як постійну пам'ять, якийсь простір на жорсткому диску вашого сервера, який виділено винятково для роботи з певним контейнером і які можна легко переносити з одного місця на диску на інше або навіть між різними серверами, при перенесенні якоїсь програми цілком. Таким чином, якщо контейнер можна уявити як невеликий окремий сервер, то Том - це його жорсткий диск.

 

Ось тепер, коли ми визначилися з основними поняттями – ми можемо розпочати практику.

 

 

 

Видалення Docker образів

 

Docker образи можуть швидко накопичуватися у вашій системі, особливо якщо ви часто завантажуєте та створюєте нові образи. Ось як керувати ними та видаляти їх:


Відображення списку образів Docker

Перед видаленням образів корисно подивитися, які образи зараз знаходяться у вашій системі. Використовуйте наступну команду для виведення списку всіх образів Docker:

     docker images

Ця команда відобразить список образів разом з їх репозиторіями, тегами та розмірами. Наприклад:

    $ docker images

    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    <none>                    <none>              77af4d6b9913        19 hours ago        1.089 GB
    committ                   latest              b6fa739cedf5        19 hours ago        1.089 GB
    <none>                    <none>              78a85c484f71        19 hours ago        1.089 GB
    docker                    latest              30557a29d5ab        20 hours ago        1.089 GB
    <none>                    <none>              5ed6274db6ce        24 hours ago        1.089 GB
    postgres                  9                   746b819f315e        4 days ago          213.4 MB
    postgres                  9.3                 746b819f315e        4 days ago          213.4 MB
    postgres                  9.3.5               746b819f315e        4 days ago          213.4 MB
    postgres                  latest              746b819f315e        4 days ago          213.4 MB

 

 

Видалення певного образу Docker

Щоб видалити певний Docker образ, вам знадобиться ідентифікатор образу або ім'я та тег репозиторію. Використовуйте наступну команду для видалення образу:

     docker rmi <image_id>

Замініть <image_id> фактичним ідентифікатором зображення. Ви також можете використовувати ім'я репозиторію та тег:

     docker rmi <repository>:<tag>

Наприклад:

     docker rmi ubuntu:latest

 

 

 

Примусове видалення образів Docker

Іноді ви можете зіткнутися із ситуацією, коли образ використовується зупиненим та запущеним контейнером, що перешкоджає його видаленню. У таких випадках можна використовувати прапор -f для примусового видалення образу:

     docker rmi -f <image_id>

 


Видалення всіх Docker образів

ВАЖЛИВО! Будьте обережні з наступною командою, тому що вона видалить усі образи з вашої системи.

Щоб видалити всі образи Docker з вашої системи, використовуйте наступну команду:

     docker rmi $(docker images -q)

Команда docker images -q, що знаходиться в дужках, виводить список усіх ідентифікаторів образів, які потім у вигляді параметра передаються команді docker rmi для їх видалення.

 

 

 

Видалення Docker контейнерів

 

Контейнери також можуть накопичуватися, особливо якщо ви часто створюєте (запускаючи образи) та зупиняєте контейнери. Перед тим як видалити якийсь контейнер, радимо перевірити список існуючих контейнерів, щоб не видалити чогось зайвого.


Список контейнерів Docker

Щоб вивести список усіх контейнерів Docker, скористайтеся наступною командою:

     docker ps

Наприклад:

    $ docker ps --no-trunc

    CONTAINER ID                                                     IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES
    ca5534a51dd04bbcebe9b23ba05f389466cf0c190f1f8f182d7eea92a9671d00 ubuntu:22.04                 bash                   17 seconds ago       Up 16 seconds       3300-3310/tcp       webapp
    9ca9747b233100676a48cc7806131586213fa5dab86dd1972d6a8732e3a84a4d crosbymichael/redis:latest   /redis-server --dir    33 minutes ago       Up 33 minutes       6379/tcp            redis,webapp/db


Як ви помітили, у цієї команди можуть бути параметри. Наприклад, якщо додати до цієї команди параметр -а (--all), тоді ця команда відобразить всі контейнери, включаючи зупинені

 

 


Видалення певного контейнера Docker

Для видалення певного контейнера вам знадобиться ідентифікатор або ім'я контейнера. Використовуйте наступну команду:

     docker rm <container_id>

Замініть <container_id> фактичним ідентифікатором або ім'ям контейнера.

 

 

 

Примусове видалення контейнерів Docker

Якщо контейнер запущено і ви хочете видалити його, спочатку його потрібно його зупинити, ну або використовувати флаг -f для примусового видалення:

     docker rm -f <container_id>

 

 

Видалення всіх зупинених Docker контейнерів

Щоб видалити всі зупинені контейнери, використовуйте таку команду:

     docker container prune

Ця команда вимагатиме підтвердження перед видаленням усіх зупинених контейнерів.

 


 

Інші популярні статті у нашому Блозі:


    - Що таке LVM і як налаштувати LVM в Ubuntu

    - Максимізація продуктивності: 10G сервери та сфери їх застосування

    - Жонглювання процесами — Використання Linux команди ps з прикладами

    - Як відкрити порт в UFW

 


 


Видалення Docker томів

 

Тому використовуються для збереження даних, і з часом, після видалення старих контейнерів у вас можуть накопичуватися томи, що не використовуються. І щоб вони не засмічували дорогоцінний дисковий простір, їх також можна видалити. Але для початку нам, так само як і у випадку з образами та контейнерами – треба розуміти, які томи зараз існують у системі.


Список Docker томів

Щоб отримати список всіх томів Docker, використовуйте наступну команду:

     docker volume ls

Ця команда відобразить список томів разом із драйверами та іменами. Наприклад:

    $ docker volume ls

    DRIVER              VOLUME NAME
    local               my_chat_app
    local               john_game_app

 

 

Видалення певного Docker тома

Щоб видалити певний том, вам потрібне ім'я тома. Використовуйте наступну команду:

     docker volume rm <volume_name>

Замініть <volume_name> фактичним ім'ям тома.

 

 

Примусове видалення томів Docker

Щоб примусово видалити том, можна використати флаг -f:

     docker volume rm -f <volume_name>

 

 

Видалення всіх невикористовуваних Docker томів

Іноді буває зручним видалити всі томи, що не використовуються. Щоб це слідувати, використовуйте таку команду:

     docker volume prune

Ця команда запитає підтвердження перед видаленням усіх томів, що не використовуються.

 

 

 


Розширені методи очищення

 

Docker надає безліч додаткових, зручних команд і методів, які допоможуть вам ефективніше керувати середовищем свого Docker і очищати його при потребі.


Видалення Dangling образів

Наприклад, ви можете видалити так звані Dangling образи, це образи, на які не посилається жоден контейнер. Щоб це зробити, використовуйте таку команду:

     docker image prune

 


Автоматизація очищення Docker

Ручне очищення може бути стомлюючим, особливо якщо у вас багато Docker ресурсів або ви керуєте великою кількістю серверів. Ви можете автоматизувати процес очищення за допомогою скрипту. Нижче наведено приклад Bash скрипта для очищення образів, контейнерів та Docker томів:

      #!/bin/bash

      # Видалити всі зупинені контейнери
      docker container prune -f

      # Видалити всі невикористовувані томи
      docker volume prune -f

      # Видалити всі Dangling образи
      docker image prune -f

      # Видалити всі образи, що не використовуються.
      docker image prune -af

      echo "Очистка Docker завершена."


Збережіть цей скрипт як docker_cleanup.sh, зробіть його виконуваним та періодично запускайте його, щоб підтримувати чистоту Docker середовища:

      chmod +x docker_cleanup.sh
      ./docker_cleanup.sh

 

 

 

Висновки

Ефективне керування Docker образами, контейнерами та томами має велике значення для підтримки чистого та функціонального Docker середовища, особливо, якщо у вашому управлінні знаходяться десятки та сотні Docker серверів. Регулярно видаляючи ресурси, що не використовуються і непотрібні, ви можете звільнити дисковий простір і уникнути потенційних конфліктів між додатками в майбутньому.

Озброївшись цими базовими командами, ви завжди можете адаптувати процес очищення до своїх конкретних потреб, тому що Docker - це дуже гнучкий інструмент, що дозволяє легко кастомізувати його використання.

Але також він може споживати безліч ресурсів, тому завжди пам'ятайте, що чисте Docker середовище не тільки заощаджує дисковий простір, але й підвищує продуктивність та знижує ризик виникнення проблем, спричинених застарілими чи невикористовуваними ресурсами. Тому завжди приділяйте час регулярному перегляду та очищенню непотрібних образів, контейнерів та томів.