Heim >Betrieb und Instandhaltung >Docker >Docker prüft, wo sich die Protokolldatei befindet

Docker prüft, wo sich die Protokolldatei befindet

PHPz
PHPzOriginal
2023-05-13 14:12:3711181Durchsuche

Docker ist eine sehr beliebte Open-Source-Containerisierungsplattform, die eine effizientere, zuverlässigere und sicherere Lösung für die Anwendungsbereitstellung und -verwaltung bietet. Wenn wir Docker jedoch für die Bereitstellung sowie den Betrieb und die Wartung verwenden, müssen wir häufig die Protokolldateien während des laufenden Prozesses des Containers abfragen, um den Betriebsstatus des Systems, die Fehlerbehebung, das Debuggen von Betrieb und Wartung usw. besser zu verstehen. Wo werden also die Protokolldateien in Docker gespeichert? In diesem Artikel erhalten Sie eine detaillierte Einführung in die Docker-Methode zum Anzeigen von Protokolldateien und die damit verbundenen Vorsichtsmaßnahmen.

1. Der Standardspeicherort der Docker-Protokolldateien

In Docker generiert jeder Container entsprechende Protokolldateien. Diese Protokolldateien werden standardmäßig im Dateisystem des Containers gespeichert. Insbesondere leitet Docker die Standardausgabe (stdout) und den Standardfehler (stderr) des Containers standardmäßig in die Standardausgabe- und Standardfehlerdateien des Containers um. Diese Protokolldateien befinden sich normalerweise im folgenden Verzeichnis:

/var/lib/docker/containers/$CONTAINER_ID/$CONTAINER_ID-json.log

wobei $CONTAINER_ID die eindeutige Kennung des Containers darstellt.

Für die Speicherung von Docker-Protokollen gibt es folgende wichtige Punkte:

  1. Protokolldateien werden standardmäßig im Container und nicht auf dem Host gespeichert. Dies liegt daran, dass Docker standardmäßig die Containervirtualisierung verwendet, um Anwendungen und den Container auszuführen ist eine isolierte Umgebung, die ein eigenes Dateisystem und einen eigenen Prozessraum umfasst.
  2. Protokolldateien werden normalerweise im JSON-Format gespeichert. Diese Dateien enthalten den Zeitstempel jeder Protokollzeile, die Protokollebene, die Container-ID, den Protokollinhalt und andere Informationen.
  3. Protokolldateien werden standardmäßig nicht automatisch gelöscht. Wenn wir diese Dateien also nicht aktiv löschen, belegen sie weiterhin den Speicherplatz des Containers, was dazu führt, dass der Speicherplatz allmählich abnimmt, während der Container ausgeführt wird.

2. Verwenden Sie Docker CLI, um Container-Protokolldateien anzuzeigen.

Bei der Verwendung von Docker für die Containerverwaltung können wir das Docker-CLI-Befehlszeilentool verwenden, um Container-Protokolldateien anzuzeigen. Im Folgenden stellen wir einige grundlegende Docker-CLI-Befehle vor, um die Funktion zum Anzeigen von Containerprotokollen zu implementieren.

  1. Docker-Protokolle [OPTIONEN] CONTAINER

Mit diesem Befehl werden alle Protokollinformationen des angegebenen Containers gedruckt. Darunter können die OPTIONEN-Optionen sein:

-a, --all: Protokollinformationen aller Container anzeigen

-t, --timestamps: Zeitstempel anzeigen

-f, --follow: Protokollinformationen ausgeben Das heißt, das Anzeigeprotokoll wird kontinuierlich aktualisiert

--tail=: Geben Sie die angegebene Anzahl von Protokollzeilen ab dem Ende der Protokolldatei aus. Der Standardwert ist alle Protokolle ($ docker logs - tail all)

--since=: Gibt die nach der angegebenen Zeit aufgezeichneten Protokolle aus, z. B. „01.01.2019“ oder Zeitstempel

--until=: Gibt die vor der angegebenen Zeit aufgezeichneten Protokolle aus

Das Spezifische Die Verwendung ist wie folgt:

$ Docker-Protokolle CONTAINER_ID

Dieser Befehl zeigt alle Protokollinformationen des angegebenen Containers an, wobei CONTAINER_ID die eindeutige Kennung des Containers ist. Wenn Sie die letzten N Zeilen der Protokollinformationen des Containers anzeigen möchten, können Sie den folgenden Befehl verwenden:

$ docker logs --tail N CONTAINER_ID

Wenn wir die Protokollausgabe eines Containers in Echtzeit überwachen müssen Wir können jederzeit die Option -f hinzufügen:

$ docker logs -f CONTAINER_ID

  1. docker inspect [OPTIONS] CONTAINER

Dieser Befehl wird verwendet, um detaillierte Informationen zum angegebenen Container zu erhalten, einschließlich des Protokolldateipfads des Containers , Betriebsstatus, IP-Adresse, Portzuordnung und andere verwandte Informationen. Mit diesem Befehl können wir den Standardspeicherpfad der Protokolldatei des Containers abrufen, wie unten gezeigt:

$ docker inspect --format='{{.LogPath}}' CONTAINER_ID

Zusätzlich zum Anzeigen des Containerprotokolldateipfads Mit diesem Befehl können Sie auch andere verwandte Informationen anzeigen. Die spezifische Verwendung ist wie folgt:

$ docker inspect CONTAINER_ID

3. Verwenden Sie Tools von Drittanbietern, um Docker-Protokolle anzuzeigen.

Zusätzlich zum Docker-CLI-Tool können Sie dies auch tun Verwenden Sie Tools von Drittanbietern, um Docker-Protokolle bequemer anzuzeigen. Hier stellen wir zwei beliebte Docker-Protokollanzeigetools vor:

  1. Docker Compose

Docker Compose ist ein von Docker offiziell bereitgestelltes Container-Orchestrierungstool. Es bietet eine konfigurierbare Datei docker-compose.yml zum Definieren von Multi-Container-Anwendungen Operationsmethoden. Die Verwendung von Docker Compose für die Bereitstellung erleichtert das gleichzeitige Starten mehrerer Container und das gleichzeitige Sammeln und Verwalten von Protokollen.

Beim Bereitstellen einer Anwendung mit Docker Compose können Sie Containerprotokolle über den Befehl docker-compose logs anzeigen. Die spezifische Verwendung ist wie folgt:

$ docker-compose logs [SERVICES...]

wobei SERVICES der angegebene Dienstname ist. Standardmäßig werden die Protokolle aller Dienste angezeigt.

  1. ELK Stack

ELK bezieht sich auf die Kombination der drei Open-Source-Software Elasticsearch + Logstash + Kibana, die zusammenarbeiten können, um Protokollerfassung, -analyse und -visualisierung zu erreichen. Die Protokolldaten in Docker können über Logstash gesammelt werden. Anschließend können die Protokolldaten zur Indizierung und zum Abruf an Elasticsearch übertragen werden. Schließlich können die Daten über die Kibana-Schnittstelle visuell angezeigt werden.

Die Verwendung von ELK Stack für die Docker-Protokollerfassung und -Visualisierung erfordert die folgenden Schritte:

(1) Docker installieren

(2) Docker Compose installieren

(3) Laden Sie die ELK Stack-Imagedatei herunter: docker pull sebp/elk

(4) Verwenden Sie die Datei docker-compose.yml, um den ELK-Stack-Dienst zu starten:

version: '3.7'
services:
elasticsearch:

image: sebp/elk
ports:
  - "9200:9200"
volumes:
  - ./elasticsearch.yml:/etc/elasticsearch/elasticsearch.yml

kibana:

image: sebp/elk
ports:
  - "5601:5601"
links:
  - elasticsearch

logstash:

image: sebp/elk
volumes:
  - ./logstash:/etc/logstash/conf.d
links:
  - elasticsearch

(5) Im Logstash-Konfigurationsdatei Geben Sie den Docker-Protokollpfad an:

input {
file {

path => ["/var/lib/docker/containers/*/*.log"]
type => "docker"
codec => "json"

}
}

filter {
if [type] == "docker" {

}
}

output {
elasticsearch {

hosts => "elasticsearch:9200"
manage_template => false
index => "docker-%{+YYYY.MM.dd}"

}
}

(6) Starten Sie den Logstash-Dienst neu und suchen Sie dann über die Kibana-Schnittstelle nach Docker-Protokolldateien und zeigen Sie diese an.

Zusammenfassend beschreibt dieser Artikel die Methode zum Anzeigen von Protokolldateien in Docker, einschließlich Docker-CLI-Befehlen und Tools von Drittanbietern wie Docker Compose und ELK Stack. Mit Hilfe dieser Tools können wir die Protokollinformationen des Docker-Containers einfacher überwachen und debuggen, um den normalen Betrieb der Anwendung sicherzustellen.

Das obige ist der detaillierte Inhalt vonDocker prüft, wo sich die Protokolldatei befindet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn