Ви хочете знати, що програми Docker роблять за лаштунками? Давайте дізнаємося більше про таємне вікно, відоме як журнали, у ваших контейнерах, яке показує кожен їхній рух. Журнали надзвичайно корисні для вирішення проблем. Але перш ніж ми почнемо, давайте швидко розглянемо, що таке Docker і Docker Compose.
Docker дозволяє упаковувати програми в невеликі контейнери та запускати їх у більшості операційних систем без будь-яких залежностей. Це схоже на розміщення ваших програм у маленьких коробочках, які називаються контейнерами, які можуть працювати однаково всюди. Знання про контейнери є важливою передумовою для вивчення Docker compose. Тож я раджу вам спочатку прочитати наш блог переваги контейнеризації.
Docker Compose постачається разом із Docker і спрощує розробку кількох контейнерних програм, об’єднуючи їхні служби, мережі та сховище. Журнали контейнерів Docker і журнали Docker Compose допомагають розробникам побачити, що робить кожен контейнер.
Отже, вам цікаво про Docker Compose Logs? Ви в правильному місці. У цьому блозі пояснюються основи журналів Docker Compose і розкриваються більш складні деталі. Дізнайтеся, як максимально використовувати Docker Compose для своїх проектів.
Важливість журналів створення Docker
Уявіть, що розробник запускає програму з Docker, але пропускає налаштування журналів Docker. Спочатку ніби все добре. Але незабаром користувачі знаходять помилки, і додаток гальмує. Без журналів Docker розробник не зможе побачити, що пішло не так усередині контейнерів Docker. Журнали Docker Compose схожі на детальний запис цих контейнерів. Вони записують кожну деталь того, що відбувається, що важливо для пошуку та усунення проблем пізніше.
Як розробник або системний адміністратор ви повинні розуміти, що відбувається всередині багатоланцюжкових програм і між ними. Тут журнали Docker Compose служать зручним інструментом. Отже, навіщо потрібні ці журнали?
-
Усунення несправностей і налагодження
Перевірте журнали докерів, якщо програма не працює належним чином або виявляє помилки. Журнали 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:альпійський.
- Далі ми очищаємо стандартну сторінку привітання Nginx.
- Потім ми переконаємося, що веб-сервер прослуховує порт 80.
- Нарешті, ми запускаємо сервер Nginx за допомогою CMD.
Тепер наш Dockerfile готовий, ми переходимо до наступного кроку, який створює файл 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.
- У наступному рядку ми називаємо наш сервіс «Інтернет“.
- Потім ми наказуємо Docker створити наш веб-сервер із поточної папки.
- Ми зв’язуємо порт 8080 на нашому хості з портом 80 у нашому контейнері, щоб наш веб-сервер міг встановити з’єднання.
- Нарешті, карти конфігурації томів 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
Тепер наш веб-сервер готовий, працює та працює. Він уже генерує журнали та зберігає цю інформацію для подальшого використання. Доступ до ваших журналів створення докерів є важливим для усунення несправностей і моніторингу. Але як ми можемо читати ці журнали? Ось де журнали докерів стає в нагоді. Переконайтеся, що ви перебуваєте в папці, де існує конфігурація, і виконайте цю команду.

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

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

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

Основною метою використання Docker Compose є створення багатоконтейнерних програм. Тому вам може знадобитися прочитати певні журнали для потрібної служби. Для цього використовуйте docker-compose logs -f СЕРВІС, пам'ятаючи про заміну СЕРВІС з вашою фактичною назвою служби.

Логування Docker
Екосистема Docker може стати складнішою для конвергентних програм, особливо у великих середовищах. Як ми вже знаємо, кожен контейнер генерує журнали. Таким чином, механізм, відомий як драйвер реєстрації, відповідає за отримання, доставку та зберігання журналів. За замовчуванням Docker використовує файли JSON для драйвера журналювання, але він також підтримує інші драйвери, кожен зі своїми перевагами та недоліками.
Усі погоджуються, що журнали мають вирішальне значення в різних сферах, зокрема для усунення несправностей і підвищення продуктивності системи. Нижче ми розглянемо два основні аспекти використання контейнерних журналів:
- Моніторинг: Основне призначення журналів – моніторинг. Вони зазвичай показують загальний стан наших контейнерних програм.
- Усунення несправностей: У разі виникнення проблем журнали допомагають нам виявляти збої програми.
Оскільки журнали докерів і журнали створення докерів постійно генеруються, вони можуть заповнити все сховище VPS. Тому нам потрібна стратегія керування дисковим простором, яка називається політикою ротації журналу. Щоб створити та використовувати цю політику, поверніться до 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-файл відповідно до ваших потреб.
Моделі доставки журналів Docker
Інженери можуть вибрати іншу модель журналювання в більш просунутих середовищах, ніж стандартні драйвери JSON, наприклад Syslog, fluentd та інші. Однак важливо пам’ятати, що драйвер JSON-файлу підходить для більшості сценаріїв журналювання, і може не виникнути потреби відхилятися від режиму за замовчуванням.
Залежно від архітектури вашої програми або організаційних вимог, ви можете бути змушені використовувати рішення для централізованого журналювання, відомі як агрегатори журналів. Ці послуги, в т.ч Elasticsearch, Logstash, Kibana тощо призначені для отримання журналів із різних джерел і їх консолідації, зберігання та аналізу в одному центральному місці.
І навпаки, ви повинні зберігати свої журнали, використовуючи більш економічно ефективні рішення для зберігання. Розглянемо сценарій, коли ваш VPS використовує високошвидкісне та дороге сховище; може бути невигідно використовувати такі преміум-ресурси для зберігання журналів, які можуть знадобитися лише для використання в майбутньому.
Доступно багато моделей лісозаготівлі, кожна з яких має переваги та недоліки. Уважно оцінюйте кожну модель і вибирайте одну відповідно до ваших конкретних потреб.
Отримайте собі економний або преміальний Linux VPS для розміщення вашого веб-сайту або віддаленого робочого столу за найнижчою ціною. VPS працює на Linux KVM для підвищення ефективності та працює на потужному апаратному забезпеченні з накопичувачем NVMe SSD для збільшення швидкості.
ДетальнішеВисновок
Розуміння журналів Docker Compose є ключовим. Вони допомагають добре керувати програмами Docker і налагоджувати їх. Навчившись отримувати доступ до цих журналів і відстежувати їх, ви покращите вирішення проблем і підвищите продуктивність і безпеку вашої програми. Незалежно від того, розробляєте чи адмініструєте системи, використання журналів Docker Compose є важливим. Вони гарантують ефективне управління вашим контейнером.
FAQ
Як я можу фільтрувати журнали 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>/. Перш ніж це зробити, ви повинні ідентифікувати ідентифікатор контейнера Docker за допомогою docker ps -a.
Чи можете ви стежити за журналами Docker?
Так, можна. Для цього вам слід використовувати команду docker logs разом із опцією -f або –follow. Це одержить для вас журнали Docker.