Sobes.tech
Junior

Jak zobrazit logy v běžícím kontejneru?

sobes.tech AI

Odpověď od AI

# Zobrazení všech logů kontejneru
docker logs <container_id_or_name>

# Zobrazení posledních 100 řádků logů
docker logs --tail 100 <container_id_or_name>

# Zobrazení logů od spuštění kontejneru
docker logs --follow <container_id_or_name>

# Zobrazení logů 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>

# Zobrazení logů za určité časové období
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Uložení logů do souboru
docker logs <container_id_or_name> > container_logs.txt

Logging v kontejnerech je založen na přesměrování standardního výstupu (stdout) a chyb (stderr) aplikace uvnitř kontejneru. Docker tyto toky sbírá a zpřístupňuje je přes příkaz docker logs.

Alternativní přístupy:

  1. Použití ovladačů logování Docker: Konfigurace démona Docker tak, aby odesílal logy do centralizovaných systémů logování (například ELK Stack, Splunk, CloudWatch Logs) pomocí různých ovladačů logování. To je preferovaná metoda pro produkční prostředí.

  2. Mapování svazků: Připojení svazku z hostitelského systému do kontejneru, kam aplikace zapisuje logy.

    # příklad docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Mapování svazku
    

    Po tomto jsou logy dostupné na hostitelském stroji na určené cestě.

  3. Instalace agentů pro sběr logů: Nasazení agenta pro sběr logů (například Filebeat, Fluentd) v kontejneru nebo jako sidecar, který shromažďuje logy a odesílá je do centralizovaného systému.