Sobes.tech
Junior

Jak wyświetlić logi w działającym kontenerze?

sobes.tech AI

Odpowiedź od AI

# Wyświetl wszystkie logi kontenera
docker logs <container_id_or_name>

# Wyświetl ostatnie 100 linii logów
docker logs --tail 100 <container_id_or_name>

# Wyświetl logi od początku działania kontenera
docker logs --follow <container_id_or_name>

# Wyświetl logi od określonego czasu
# Format czasu: RFC3339 (YYYY-MM-DDTHH:MM:SSZ)
docker logs --since 2023-10-27T10:00:00Z <container_id_or_name>

# Wyświetl logi z określonego okresu czasu
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Zapisz logi do pliku
docker logs <container_id_or_name> > container_logs.txt

Logowanie w kontenerach opiera się na przekierowaniu standardowych strumieni wyjścia (stdout) i błędów (stderr) aplikacji wewnątrz kontenera. Docker zbiera te strumienie i udostępnia je za pomocą polecenia docker logs.

Alternatywne podejścia:

  1. Użycie sterowników logowania Docker: Konfiguracja demona Docker do wysyłania logów do scentralizowanych systemów logowania (np. ELK Stack, Splunk, CloudWatch Logs) za pomocą różnych sterowników logowania. To jest preferowana metoda dla środowisk produkcyjnych.

  2. Mapowanie wolumenów: Montowanie wolumenu z systemu hosta do kontenera, do którego aplikacja zapisuje logi.

    # przykładowy plik docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Mapowanie wolumenu
    

    Po tym logi są dostępne na maszynie hosta pod wskazaną ścieżką.

  3. Instalacja agentów logowania: Deployment agenta logowania (np. Filebeat, Fluentd) w kontenerze lub jako sidecar, który zbiera logi i wysyła je do scentralizowanego systemu.