Sobes.tech
Junior

Como visualizar os logs num contêiner em execução?

sobes.tech IA

Resposta da IA

# Ver todos os logs do contêiner
docker logs <container_id_or_name>

# Ver as últimas 100 linhas de logs
docker logs --tail 100 <container_id_or_name>

# Ver os logs desde o início do contêiner
docker logs --follow <container_id_or_name>

# Ver logs desde um momento específico
# Formato de hora: RFC3339 (YYYY-MM-DDTHH:MM:SSZ)
docker logs --since 2023-10-27T10:00:00Z <container_id_or_name>

# Ver logs durante um período de tempo específico
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Guardar logs num ficheiro
docker logs <container_id_or_name> > container_logs.txt

O registo em containers baseia-se na redireção dos fluxos padrão de saída (stdout) e erro (stderr) da aplicação dentro do container. O Docker recolhe esses fluxos e disponibiliza-os através do comando docker logs.

Abordagens alternativas:

  1. Utilização de controladores de registo Docker: Configuração do daemon Docker para enviar logs para sistemas de registo centralizados (por exemplo, ELK Stack, Splunk, CloudWatch Logs) usando vários controladores de registo. Este é o método preferido para ambientes de produção.

  2. Mapeamento de volumes: Montar um volume do sistema host dentro do container, onde a aplicação escreve os logs.

    # exemplo de docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Mapeamento de volume
    

    Depois disso, os logs estão disponíveis na máquina host na localização especificada.

  3. Instalação de agentes de registo: Desdobramento de um agente de registo (por exemplo, Filebeat, Fluentd) no container ou como sidecar, que recolhe os logs e os envia para um sistema centralizado.