Sobes.tech
Junior

Как да прегледаме логовете в работещ контейнер?

sobes.tech AI

Отговор от AI

# Преглед на всички логове на контейнера
docker logs <container_id_or_name>

# Преглед на последните 100 реда логове
docker logs --tail 100 <container_id_or_name>

# Преглед на логовете от старта на контейнера
docker logs --follow <container_id_or_name>

# Преглед на логовете от определен момент
# Формат на времето: RFC3339 (YYYY-MM-DDTHH:MM:SSZ)
docker logs --since 2023-10-27T10:00:00Z <container_id_or_name>

# Преглед на логовете за определен период
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Запазване на логовете във файл
docker logs <container_id_or_name> > container_logs.txt

Логването в контейнери се базира на пренасочването на стандартните потоци за изход (stdout) и грешки (stderr) на приложението вътре в контейнера. Docker събира тези потоци и ги предоставя чрез командата docker logs.

Алтернативни подходи:

  1. Използване на драйвери за логиране на Docker: Конфигуриране на демона Docker да изпраща логовете към централизирани системи за логиране (например, ELK Stack, Splunk, CloudWatch Logs) чрез различни драйвери за логиране. Това е предпочитаният метод за производствени среди.

  2. Мапинг на томове: Монтиране на том от хост системата към контейнера, където приложението записва логовете.

    # пример за docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Мапинг на том
    

    След това логовете са достъпни на хост машината по посочения път.

  3. Инсталиране на агенти за логиране: Разгръщане на агент за логиране (например, Filebeat, Fluentd) в контейнера или като sidecar, който събира логовете и ги изпраща към централизирана система.