Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Einstellungen und Logs eines Containers lesen

Nach dieser Lektion: Ich kann herausfinden, wie ein Container eingerichtet wurde und was er gemeldet hat.

Lektion, 50 Min.9 BefehleDocker-Grundlagen-Lab: Container, Logs und Neustarts lernen, indem ein defekter Dienst repariert wird

Um neun Uhr abends ging etwas kaputt

Die Seite eines Shops zeigt einen Fehler. Die Person, die ihn gebaut hat, schläft. Sie haben Bereitschaft und können niemanden fragen.

Alles, was Sie brauchen, liegt auf dem Rechner: was dem Programm gesagt wurde und was das Programm beim Laufen gesagt hat.

Am Ende dieser Lektion

Notiz

Ich kann herausfinden, wie ein Container eingerichtet wurde und was er gemeldet hat.

Schlüsselbegriffe

BegriffWas er bedeutetBeispiel
Inspectalle Einstellungen eines Containers lesen
Logdie Meldungen, die ein Programm beim Laufen schreibt
Exit-Codedie Zahl, die ein Programm beim Beenden liefert; 0 heißt Erfolg
Health-Checkein Test, den Docker wiederholt, um zu sehen, ob ein Dienst antwortet
Umgebungsvariableeine benannte Einstellung, die ein Programm erhältNGINX_VERSION

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

docker inspect liest die Einrichtung

docker ps zeigt ein paar Spalten. docker inspect zeigt alles, was Docker über einen Container weiß, als JSON.

Selten liest man alles. --format wählt ein Feld aus, geschrieben in doppelten geschweiften Klammern. Die nächsten vier Befehle lesen Image, Türen, Speichergrenze und eine Umgebungsvariable von web.

Welches Image führt web aus?

Befehl
docker inspect --format '{{.Config.Image}}' web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Welche Türen nennt es?

Befehl
docker inspect --format '{{json .Config.ExposedPorts}}' web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Wie viel Speicher darf es nutzen, in Bytes?

Befehl
docker inspect --format '{{.HostConfig.Memory}}' web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Umgebungsvariable darin lesen

Befehl
docker exec web printenv NGINX_VERSION

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Beispiel: wer was festgelegt hat

SacheWer sie festlegteWie man sie liest
Das Imagewer den Container gestartet hatConfig.Image
Die Türen (Ports)die Autorin des Images, im DockerfileConfig.ExposedPorts
Die Speichergrenzedie compose-Datei des LabsHostConfig.Memory
NGINX_VERSIONdie Autorin des Images, im Dockerfiledocker exec web printenv NGINX_VERSION

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Irrtum

Warnung

Viele glauben, docker ps zeige alles über einen Container. Es zeigt eine Zusammenfassung. Der Benutzer, unter dem er läuft, seine Grenzen, seine Umgebung und seine Gesundheit stehen nur in docker inspect. Mit ps finden Sie den Container, mit inspect befragen Sie ihn.

Ein Log ist, was das Programm sagte

Das Log eines Containers ist alles, was sein Hauptprogramm ausgegeben hat. docker logs zeigt es.

Ein stark genutzter Dienst schreibt viel. In diesem Lab ruft ein Health-Check web alle paar Sekunden auf, und jeder Aufruf ist eine Zeile. Darum filtert man. Fragen Sie zuerst nach einer Seite, die es nicht gibt.

web nach einer fehlenden Seite fragen

Befehl
curl -s -o /dev/null -w "%{http_code}\n" http://web/missing

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Diese Anfrage im Log finden

Befehl
docker logs web 2>&1 | grep "/missing"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Exit-Code und Health sagen, wie es endete

Ein Container läuft oder er hat angehalten. Wenn er anhält, sagt sein Exit-Code, wie. Null heißt, er wurde gut fertig. Jede andere Zahl heißt Fehler.

Ein Health-Check ist ein Test, den Docker wiederholt, solange der Container läuft. Das Ergebnis ist healthy oder unhealthy.

Läuft web? Welchen Exit-Code hat es?

Befehl
docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Besteht web seinen Health-Check?

Befehl
docker inspect --format '{{.State.Health.Status}}' web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Wie viel Speicher nutzt web jetzt?

Befehl
docker stats --no-stream --format "{{.Name}} {{.MemUsage}}" web

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Beispiel: vier Fragen an einen gestörten Container

FrageBefehlWas ein gestoppter Job "report" zeigen könnte
Läuft er?docker ps -aExited (137) vor einer Minute
Wie endete er?docker inspect --format '{{.State.ExitCode}}' report137: er wurde getötet
Was sagte er zuletzt?docker logs --tail 5 reporteine Zeile über fehlenden Speicher
Was war ihm gesagt worden?docker inspect --format '{{.HostConfig.Memory}}' reporteine Grenze, die für den Job zu klein ist

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Weiterführend

Der worker des Labs ist gestoppt. Sie haben jetzt die vier Fragen für ihn: Status, Exit-Code, Log und Einstellungen. Die Aufgabe des Labs ist, sie zu beantworten und ihn zu reparieren.

Führen Sie vorher docker inspect web ohne --format aus. Finden Sie die drei großen Abschnitte: Config, State und HostConfig.

Über dieses Lab und seinen Quellcode: Docker-Grundlagen-Lab: Container, Logs und Neustarts lernen, indem ein defekter Dienst repariert wird

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.