Sobes.tech
Junior

Ako si zobraziť logy v bežiacom kontajneri?

sobes.tech AI

Odpoveď od AI

# Zobrazenie všetkých logov kontajnera
docker logs <container_id_or_name>

# Zobrazenie posledných 100 riadkov logov
docker logs --tail 100 <container_id_or_name>

# Zobrazenie logov od spustenia kontajnera
docker logs --follow <container_id_or_name>

# Zobrazenie logov od určitého času
# Formát času: RFC3339 (YYYY-MM-DDTHH:MM:SSZ)
docker logs --since 2023-10-27T10:00:00Z <container_id_or_name>

# Zobrazenie logov za určitý časový úsek
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Uloženie logov do súboru
docker logs <container_id_or_name> > container_logs.txt

Logging v kontajneroch je založený na presmerovaní štandardného výstupu (stdout) a chýb (stderr) aplikácie vo vnútri kontajnera. Docker tieto toky zbiera a sprístupňuje ich cez príkaz docker logs.

Alternatívne prístupy:

  1. Použitie ovládačov logovania Docker: Konfigurácia démona Docker tak, aby odosielal logy do centralizovaných systémov logovania (napríklad ELK Stack, Splunk, CloudWatch Logs) pomocou rôznych ovládačov logovania. Toto je preferovaná metóda pre produkčné prostredia.

  2. Mapovanie volume: Pripojenie volume z hostiteľského systému do kontajnera, kde aplikácia zapisuje logy.

    # príklad docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Mapovanie volume
    

    Následne sú logy dostupné na hostiteľskom stroji na určenom mieste.

  3. Inštalácia agentov na zber logov: Nasadenie agenta na zber logov (napríklad, Filebeat, Fluentd) v kontejnere alebo ako sidecar, ktorý zbiera logy a odosiela ich do centralizovaného systému.