Sobes.tech
Junior

Πώς μπορούμε να δούμε τα αρχεία καταγραφής σε ένα τρέχον κοντέινερ;

sobes.tech AI

Απάντηση από AI

# Προβολή όλων των logs του κοντέινερ
docker logs <container_id_or_name>

# Προβολή των τελευταίων 100 γραμμών logs
docker logs --tail 100 <container_id_or_name>

# Προβολή logs από την εκκίνηση του κοντέινερ
docker logs --follow <container_id_or_name>

# Προβολή logs από μια συγκεκριμένη ώρα
# Μορφή ώρας: RFC3339 (YYYY-MM-DDTHH:MM:SSZ)
docker logs --since 2023-10-27T10:00:00Z <container_id_or_name>

# Προβολή logs για μια συγκεκριμένη χρονική περίοδο
docker logs --since 2023-10-27T10:00:00Z --until 2023-10-27T11:00:00Z <container_id_or_name>

# Αποθήκευση logs σε αρχείο
docker logs <container_id_or_name> > container_logs.txt

Η καταγραφή σε κοντέινερ βασίζεται στην ανακατεύθυνση των τυπικών ροών εξόδου (stdout) και σφαλμάτων (stderr) της εφαρμογής μέσα στο κοντέινερ. Το Docker συλλέγει αυτές τις ροές και τις παρέχει μέσω της εντολής docker logs.

Εναλλακτικές προσεγγίσεις:

  1. Χρήση οδηγών καταγραφής Docker: Ρύθμιση του daemon Docker για αποστολή logs σε κεντρικά συστήματα καταγραφής (π.χ., ELK Stack, Splunk, CloudWatch Logs) με διάφορους οδηγούς καταγραφής. Αυτή είναι η προτιμώμενη μέθοδος για περιβάλλοντα παραγωγής.

  2. Χαρτογράφηση όγκων: Μοντάρισμα ενός όγκου από το σύστημα του οικοδεσπότη μέσα στο κοντέινερ, όπου η εφαρμογή γράφει logs.

    # παράδειγμα docker-compose.yml
    services:
      my_app:
        image: my_app_image
        volumes:
          - /var/log/myapp:/app/logs # Χαρτογράφηση όγκου
    

    Μετά, τα logs είναι διαθέσιμα στη μηχανή του οικοδεσπότη στη συγκεκριμένη διαδρομή.

  3. Εγκατάσταση agents καταγραφής: Ανάπτυξη ενός agent καταγραφής (π.χ., Filebeat, Fluentd) μέσα στο κοντέινερ ή ως sidecar, που συλλέγει logs και τα στέλνει σε κεντρικό σύστημα.