Хочете знати, що роблять програми Docker за лаштунками? Давайте дізнаємося більше про таємне вікно, відоме як логи, у ваші контейнери, які показують кожен їх крок. Логи дуже корисні для усунення неполадок. Але перш ніж ми почнемо, давайте швидко розглянемо, що таке Docker та Docker Compose.
Docker дозволяє упакувати ваші програми в компактні контейнери й запустити їх на більшості операційних систем без додаткових залежностей. Це як розмістити програми в невеликих коробках — контейнерах, які однаково працюють скрізь. Розуміння контейнерів — важливе підґрунтя для вивчення Docker Compose. Рекомендуємо спочатку прочитати нашу статтю про переваги контейнеризації.
Docker Compose входить до складу Docker і спрощує розроблення кількох контейнеризованих програм, об'єднуючи їхні сервіси, мережі та сховища. Логи контейнерів Docker та логування Docker Compose дозволяють розробникам бачити, що робить кожен контейнер.
Цікавитеся логами Docker Compose? Ви в потрібному місці. Ця стаття розповість основи логів Docker Compose та охопить більш складні деталі. Дізнайтеся, як отримати максимум користі від Docker Compose для ваших проектів.
Важливість логів Docker Compose
Представте розробника, який запускає програму за допомогою Docker, але не налаштовує логи Docker. Спочатку все виглядає добре. Але незабаром користувачі натикаються на помилки, і програма уповільнюється. Без логів Docker розробник не може бачити, що пішло не так всередині контейнерів Docker. Логи Docker Compose — це детальний запис цих контейнерів. Вони записують кожну деталь того, що відбувається, що важливо для пошуку та виправлення проблем пізніше.
Як розробник чи системний адміністратор, ви повинні розуміти, що відбувається всередині багатомовних програм та між ними. Саме тут логи Docker Compose стають корисним інструментом. То чому ці логи необхідні?
-
Усунення помилок та налагодження
Перевіряйте логи Docker, коли програма працює неправильно або виникають помилки. Логи Docker — це перший ресурс, на який можна подивитися, щоб стежити проблему. Вивчаючи логи Docker, розробники можуть визначити кореневу причину та джерело проблем — чи то помилка в коді, неправильна конфігурація або проблеми з ресурсами.
-
Моніторинг стану програми
Регулярний моніторинг логів програми допомагає зрозуміти загальний стан сервісів. Логи можуть виявити ранні ознаки проблем, такі як повторювані помилки та повільні відповіді. Помічаючи ці закономірності рано, можна запобігти потенційним проблемам у майбутньому.
-
Аудит та відповідність
Для програм, які мають дотримуватися певних стандартів, логи Docker — це перший доказ того, що програма відповідає вимогам. Ці логи також відіграють важливу роль у моніторингу авторизованої та несанкціонованої діяльності.
-
Оптимізація
Логи — цінні ресурси для оптимізації програмного забезпечення, оскільки надають дані про продуктивність. Наприклад, розробники можуть виявити повільні запити, неефективні ділянки коду або недовикористані ресурси.
Створення рецепту Docker: розгортання веб-сервера
У цьому розділі ми разом створимо рецепт Docker. Спочатку потрібно щось розробити, щоб розпочати подорож із логами Docker Compose. Розгорнемо для цього веб-сервер. Щоб створити Dockerfile, просто запустіть nano Dockerfile у потрібній папці на VPS з таким вмістом і збережіть файл:
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Отже, що робить кожна лінія цього коду?
- Починаємо з легкої базової образки, nginx:alpine.
- Далі видаляємо стандартну сторінку привітання Nginx.
- Потім переконуємося, що веб-сервер слухає на порту 80.
- Нарешті запускаємо сервер Nginx за допомогою CMD.
Тепер наш файл Docker готовий, переходимо до наступного кроку — створення файла Docker Compose. Ось структура docker-compose.yml файл:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
Розберемо його детально, щоб зрозуміти кожну частину:
- Ми використовуємо версію 3.8.
- У наступному рядку називаємо наш сервісweb“.
- Потім інструюємо Docker збудувати наш веб-сервер з поточної папки.
- Прив'язуємо порт 8080 на хості до порту 80 в контейнері, щоб веб-сервер міг встановити з'єднання.
- Нарешті конфігурація volumes мапує index.html з диску хоста в контейнер. Потім можете створити index.html файл з будь-яким вмістом і помістити його туди, де Dockerfile та docker-compose.yml файли існують.
Тепер запускаємо наш контейнер Docker через Docker Compose. Просто виконуємо docker-compose up.

Коли виконаєте docker-compose up команду, Docker завантажить потрібні образи з інтернету та налаштує їх відповідно до наших файлів конфігурації.
Щоб перевірити, чи працює наш веб-сервер, відкрийте браузер, введіть IP-адресу VPS і запитайте доступ до порту 8080.

На заметку: можете використати docker-compose up -d щоб запустити контейнер у фоновому режимі.
Доступ до логів за допомогою Docker Compose
Тепер наш веб-сервер працює. Він уже генерує логи та зберігає цю інформацію для подальшого використання. Доступ до логів docker compose критично важливий для діагностики та моніторингу. Але як їх читати? На допомогу приходить журнали docker-compose команда. Переконайтеся, що ви в папці з конфігурацією, і виконайте цю команду.

Іноді потрібно бачити логи в реальному часі під час їх генерування. Просто додайте -f в кінець попередньої команди та виконайте docker-compose logs -f.

Деякі додатки на основі Docker можуть не надавати часові мітки в логах. У цьому випадку можете використати docker-compose logs -t додати записаний час для кожного рядка логу.

Docker Логи можуть також відображати найновіші записи. Для цього використовуйте docker-compose logs –tail 10 щоб переглянути останні 10 записів логу. Docker композує логи tail, і так само docker logs tail особливо корисний, коли потрібно швидко перевірити недавну активність без прокручування всієї історії логу.

Основне призначення Docker Compose — створювати додатки з кількома контейнерами. Тому вам може знадобитися читати конкретні логи для потрібного сервісу. Для цього використовуйте docker-compose logs -f SERVICEI don't see English text to translate in your message. You've provided the instruction "remembering to replace" but there's no complete source text. Please provide the English UI label or phrase you'd like me to translate to Ukrainian, and I'll translate it following the rules you've outlined. SERVICE замість цього підставте фактичну назву сервісу.

Логування Docker
Екосистема Docker може ставати складнішою для конвергентних додатків, особливо у великих середовищах. Як ми вже знаємо, кожен контейнер генерує логи. Тому механізм, названий Logging Driver, відповідає за отримання, доставку та зберігання логів. За замовчуванням Docker використовує JSON файли для Logging Driver, але також підтримує різні інші драйвери, кожен з яких має свої переваги та недоліки.
Всі згідні, що логи критично важливі в різних сферах, включаючи усунення неполадок і підвищення продуктивності системи. Нижче ми розглянемо два основних аспекти використання логів контейнера:
- Моніторинг: Основне призначення логів — моніторинг. Вони загалом показують загальний стан наших контейнеризованих додатків.
- Усунення несправностей: У разі виникнення проблем логи допомагають нам виявити глюки додатку.
Оскільки docker logs та docker compose logs постійно генеруються, вони можуть заповнити весь VPS сховище. Тому нам потрібна стратегія управління місцем на диску, яка називається Log Rotation Policy. Щоб створити та використовувати цю політику, повертайтеся до docker-compose.yml файлу та відкрийте його. Потім додайте розділ логування з конфігурацією нижче:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.htm:/usr/share/nginx/html/index.htm logging: driver: json-file options: max-size: "200k" max-file: "10"
Ви можете постійно коригувати max-size та max-file відповідно до ваших потреб.
Моделі передачі логів Docker
Інженери можуть вибрати іншу модель логування в більш складних середовищах, ніж драйвери JSON за замовчуванням, такі як Syslog, fluentd та інші. Однак важливо пам'ятати, що драйвер JSON-file підходить для більшості сценаріїв логування, і можливо, не буде потреби відхилятися від режиму за замовчуванням.
Залежно від архітектури вашого додатку або організаційних вимог, ви можете бути змушені використовувати рішення централізованого логування, відомі як Log Aggregators. Ці сервіси, включаючи Elasticsearch, Logstash, Kibana тощо, призначені для отримання логів з різних джерел і консолідації, зберігання та аналізу їх в одному центральному місцезнаходженні.
І навпаки, ви повинні зберігати свої логи, використовуючи більш економічні рішення для зберігання. Розглядайте сценарій, коли ваш VPS використовує високошвидкісне та дороге сховище. Може бути неекономічно використовувати такі преміум-ресурси для зберігання логів, які вам можуть знадобитися лише для подальшого довідування.
Доступні численні моделі логування, кожна з яких має переваги та недоліки. Важливо ретельно оцінити кожну модель і вибрати одну на основі ваших конкретних потреб.
Отримайте економний або преміум Linux VPS для хостингу сайту чи віддаленого робочого столу за найнижчою ціною. VPS на базі Linux KVM для підвищеної ефективності, потужне залізо та сховище NVMe SSD для максимальної швидкості.
ДокладнішеВисновок
Розуміння логів Docker Compose критично важливе. Вони допомагають керувати та налагоджувати ваші Docker додатки як слід. Навичка доступу та моніторингу цих логів покращує вирішення проблем та підвищує продуктивність і безпеку вашого додатку. Незалежно від того, розробляєте ви чи адмініструєте системи, використання логів Docker Compose є обов'язковим. Це забезпечує ефективне управління вашими контейнерами.
Часто задавані питання
Як фільтрувати логи Docker Compose за часом?
Docker Compose не пропонує прямого способу фільтрувати логи за часом. Однак ви можете фільтрувати логи, передавши їх через grep для пошуку за шаблоном. Наприклад, ви можете використовувати: docker-compose logs | grep "2023-04-06", замінивши "2023-04-06" на конкретну дату або часовий шаблон, який ви шукаєте.
Як зупинити контейнери, запущені за допомогою Docker Compose?
Перейдіть до каталогу, що містить файл docker-compose.yml, і виконайте команду docker-compose down.
Як вручну видалити файли логів?
Замість налаштування ротації логів у файлі docker-compose.yml ви можете вручну видалити файли логів Docker JSON з /var/lib/docker/containers/<container_id>/. Перед цим визначте ID контейнера Docker командою docker ps -a.
Чи можна переглядати логи Docker у реальному часі?
Так, можете. Для цього використовуйте команду docker logs з опцією -f або --follow. Вона буде виводити логи Docker в реальному часі.