Das Debuggen der meisten Linux-Programme umfasst normalerweise die Untersuchung von Protokolldateien, was ein komplexer Prozess sein kann. Wenn Sie jedoch eine Containerumgebung unter Docker ausführen, müssen Sie zum Debuggen Ihrer Anwendung in der Produktion speziellere Tools verwenden. Wo werden die Protokolle gespeichert?Die einfache Antwort ist, dass Docker Containerprotokolle an seinem primären Speicherort /var/lib/docker/ speichert. Jeder Container hat ein Protokoll, das für seine ID spezifisch ist (die vollständige ID, nicht die verkürzte, die normalerweise angezeigt wird), und Sie können wie folgt darauf zugreifen: /var/lib/docker/containers/ID/ID-json.log Dort werden sie gespeichert, da sie jedoch im JSON-Format vorliegen, sind sie nicht leicht zu lesen und die Verwendung der vollständigen Container-ID ist lästig. Docker bietet einen integrierten Befehl zum Anzeigen dieser Daten: Docker-Protokolle -f e4bd48ef3103 Hier sorgt das Flag -f dafür, dass die Eingabeaufforderung geöffnet bleibt und auf neue Einträge in der Datei „achtet“. Sie können auch --tail verwenden, um das Dateitail anzufügen, oder --timestamps, um Protokollzeiten anzuzeigen, oder --until und --since, um nach Zeit zu filtern. Wenn Sie Docker Compose verwenden, können Sie alle Protokolle einfach mit dem darin enthaltenen Protokollbefehl anzeigen: Docker-Compose-Protokolle Ihnen wird jedoch auffallen, dass die für viele Dinge nützlichen STDOUT und STDERR nur die Konsolenausgabe für den in der Docker-Datei durch „CMD“ angegebenen Einstiegspunkt anzeigen. Viele Anwendungen verfügen über eigene dedizierte Protokollierungssysteme, die normalerweise in /var/log/nginx/access.log protokollieren. Auf solche Protokolle kann weiterhin von der Hostseite über Docker zugegriffen werden. Anzeigen von Protokollen einer Anwendung innerhalb eines ContainersJe nach Behälter kann dies auch nicht erforderlich sein. Beispielsweise ist der Standard-NGINX-Container so eingerichtet, dass er seine Docker-Protokolle an STDOUT sendet, um die Protokollprüfung zu vereinfachen. Dies geschieht mithilfe eines /dev/stdout-Symlinks zur Protokolldatei. Sie könnten etwas Ähnliches für Ihren Container einrichten. RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log Wenn Sie jedoch eine bestimmte Datei im Container anzeigen möchten, können Sie dies tun. Docker bietet den Befehl exec -it, mit dem Sie jeden beliebigen Befehl innerhalb eines laufenden Docker-Prozesses ausführen können. Damit können Sie Protokolldateien in einem Docker-Container segmentieren: docker exec -it e4bd48ef3103 tail -f log.txt Da Sie damit jeden beliebigen Befehl ausführen können, können Sie journalctl oder jede andere gewünschte Debugging-Strategie verwenden, solange Sie es als docker exec -it ./bin/bash starten. Sie können es sogar ausführen, wenn Sie direkt einsteigen und herumstöbern möchten. Eine dauerhaftere Lösung, die besser für Hosting-Dienste geeignet ist, ist die Verwendung von Docker-Volume-Mounts. Sie können ein Verzeichnis wie /var/log/nginx an ein für den Host sichtbares Volume anbinden. Erstellen Sie zunächst ein neues Volume: Docker-Volume erstellt Nginx-Protokolle Und führen Sie den Container --mount mit dem folgenden Befehl aus: docker run -d \ --name devtest \ --mount Quelle=nginx-logs,Ziel=/var/log/nginx \ nginx:neueste Wenn Sie Docker Compose verwenden, kann der Prozess automatisiert werden: Version: "3.0" Leistungen: Webseite: Bild: nginx:latest Häfen: - "80:80" Bände: – nginx-logs:/var/log/nginx/ Bände: nginx-Protokolle: Auf diese Weise kann jeder Protokollaggregationsdienst auf dem Host die Protokolldateien direkt aufnehmen. Docker-Daemon-Protokolle anzeigenWenn Sie bestimmte Protokolle für den gesamten Docker-Dienst auf Ihrem Server und nicht für eine bestimmte containerisierte Anwendung anzeigen möchten, müssen Sie die Journalctl-Protokolle anzeigen: sudo journalctl -fu docker.service Auf den meisten Systemen ist der Speicherort hier, auf manchen Systemen jedoch auch anders:
Dies ist das Ende dieses Artikels darüber, wo Docker Protokolldateien speichert. Weitere Informationen zum Speichern von Protokolldateien durch Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Front-End-KI-Schnitttipps (Erfahrung)
Nachdem wir eine halbe Stunde lang versucht hatte...
Kürzlich wurde auf Unternehmensseite gemeldet, da...
Vorwort Im Falle eines Primärschlüsselkonflikts o...
Inhaltsverzeichnis Vorwort Prototypische Vererbun...
Der Dateiname der dynamischen Bibliotheksdatei un...
MySQL 8.0 für Windows v8.0.11 offizielle kostenlo...
Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...
Einige Optimierungsregeln für Browser-Webseiten S...
Methode 1: Verwenden Sie den cmd-Befehl Öffnen Si...
<!--[if IE 6]> Nur IE6 kann erkennen <![e...
1. Schritte zur Installation des RPM-Pakets: 1. S...
Tomcat CentOS-Installation Dieses Installationstu...
Inhaltsverzeichnis Vorwort XA-Protokoll So implem...
Inhaltsverzeichnis Rendern Installieren Code-Impl...