WordPress може працювати дуже швидко, якщо ви запускаєте його на VPS і правильно оптимізуєте. У цій статті ми розглянемо, як розкрити весь потенціал цієї найпоп...
Блог компанії 3v-Hosting
9 хв.
Своєю появою в далекому 2013 році Docker зробив революцію в тому, як ми можемо розробляти, доставляти і запускати свої та не лише свої програми, використовуючи технологію контейнеризації. Нещодавно ми писали про те, як встановити Docker на сервер з ОС Ubuntu 22 та користуватися ним. Однак, якщо ми давно працюємо з 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 rmi <image_id>
Замініть <image_id> фактичним ідентифікатором зображення. Ви також можете використовувати ім'я репозиторію та тег:
docker rmi <repository>:<tag>
Наприклад:
docker rmi ubuntu:latest
Іноді ви можете зіткнутися із ситуацією, коли образ використовується зупиненим та запущеним контейнером, що перешкоджає його видаленню. У таких випадках можна використовувати прапор -f для примусового видалення образу:
docker rmi -f <image_id>
ВАЖЛИВО! Будьте обережні з наступною командою, тому що вона видалить усі образи з вашої системи.
Щоб видалити всі образи Docker з вашої системи, використовуйте наступну команду:
docker rmi $(docker images -q)
Команда docker images -q, що знаходиться в дужках, виводить список усіх ідентифікаторів образів, які потім у вигляді параметра передаються команді docker rmi для їх видалення.
Контейнери також можуть накопичуватися, особливо якщо ви часто створюєте (запускаючи образи) та зупиняєте контейнери. Перед тим як видалити якийсь контейнер, радимо перевірити список існуючих контейнерів, щоб не видалити чогось зайвого.
Щоб вивести список усіх контейнерів 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 rm <container_id>
Замініть <container_id> фактичним ідентифікатором або ім'ям контейнера.
Якщо контейнер запущено і ви хочете видалити його, спочатку його потрібно його зупинити, ну або використовувати флаг -f для примусового видалення:
docker rm -f <container_id>
Щоб видалити всі зупинені контейнери, використовуйте таку команду:
docker container prune
Ця команда вимагатиме підтвердження перед видаленням усіх зупинених контейнерів.
Тому використовуються для збереження даних, і з часом, після видалення старих контейнерів у вас можуть накопичуватися томи, що не використовуються. І щоб вони не засмічували дорогоцінний дисковий простір, їх також можна видалити. Але для початку нам, так само як і у випадку з образами та контейнерами – треба розуміти, які томи зараз існують у системі.
Щоб отримати список всіх томів Docker, використовуйте наступну команду:
docker volume ls
Ця команда відобразить список томів разом із драйверами та іменами. Наприклад:
$ docker volume ls
DRIVER VOLUME NAME
local my_chat_app
local john_game_app
Щоб видалити певний том, вам потрібне ім'я тома. Використовуйте наступну команду:
docker volume rm <volume_name>
Замініть <volume_name> фактичним ім'ям тома.
Щоб примусово видалити том, можна використати флаг -f:
docker volume rm -f <volume_name>
Іноді буває зручним видалити всі томи, що не використовуються. Щоб це слідувати, використовуйте таку команду:
docker volume prune
Ця команда запитає підтвердження перед видаленням усіх томів, що не використовуються.
Docker надає безліч додаткових, зручних команд і методів, які допоможуть вам ефективніше керувати середовищем свого Docker і очищати його при потребі.
Наприклад, ви можете видалити так звані 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 середовище не тільки заощаджує дисковий простір, але й підвищує продуктивність та знижує ризик виникнення проблем, спричинених застарілими чи невикористовуваними ресурсами. Тому завжди приділяйте час регулярному перегляду та очищенню непотрібних образів, контейнерів та томів.
Прискорення WordPress на рівні Nginx: правильні налаштування PHP-FPM, try_files, статика, кешування, Brotli, захист wp-login і безпечні заголовки для стабільної...
Ефективні стратегії резервного копіювання Docker-додатків: як захищати томи, дані та конфігурації, уникаючи при цьому типових помилок, а також швидко відновлюва...
Повний огляд застосувань VPS: реальні приклади, інфраструктура для бізнесу, VPN, CI/CD та середовища розробки. Допомагає вибрати оптимальний сервер.