Docker-Grundlagen-Lab: Container, Logs und Neustarts lernen, indem ein defekter Dienst repariert wird

Dieses Lab vermittelt, was ein Container ist, indem es jeder lernenden Person drei davon gibt, einen mit Absicht defekt: eine Webseite, eine Warteschlange und einen Worker, der sofort nach dem Start stoppt. Die lernende Person findet mit docker ps und docker logs heraus, warum, sieht sich mit docker exec in einem gesunden Nachbarn um, behebt die fehlende Einstellung und startet den Worker mit docker restart erneut.

Es ist kein Angriffs-Lab. Jede Kopie hat keine Verbindung zum Internet und keine zu anderen Lernenden, und das docker im Terminal wirkt nur auf die drei Container der eigenen Kopie der lernenden Person.

Was Lernende hier lernen

Was ein Container ist und was die Spalten von docker ps aussagen, auch dass ein gestoppter Container weiter existiert, bis er entfernt wird, und nur mit docker ps -a angezeigt wird. Wie man das Log eines Dienstes liest, um den Fehler zu finden, wie man einen Befehl in einem laufenden Container ausführt und wie man einen neu startet. Und die Idee, um die das Lab aufgebaut ist: Die eigenen Dateien eines Containers überstehen einen Neustart, sind aber weg, wenn das Lab stoppt, während ein benanntes Volume erhalten bleibt. Es eignet sich für eine Einführung in Container in einer Einheit zu Informatik, Netzwerken oder DevOps.

Im Browser ausführen

Das Lab startet die Webseite und die Warteschlange und wartet, bis beide gesund sind. Danach wird der Worker gestartet und stoppt sofort, und das ist die Übung: Er ist erwartungsgemäß der, der nicht läuft.

  1. Container-Seite öffnen. Wählen Sie in der Leiste „Entwickeln“ und dann „Einen Container ausführen“. Die Seite kann jeder öffnen, und das Git-Lab und das SQL-Lab starten ohne Konto. Jedes andere Lab braucht ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und wählen Sie dann „Starten“.
  2. Lab finden. Die Karte „Beispiel-Labs“ listet alle Beispiele auf. Suchen Sie „Docker-Grundlagen“.
  3. „Starten“ wählen. „Starten“ führt das Lab unverändert mit einem Klick aus. „Zuerst die Datei bearbeiten“ öffnet die Compose-Datei, damit Sie sie vor dem Start ändern können.
  4. Öffnen. Wählen Sie auf der Seite des Labs „Terminal öffnen“ und tippen Sie docker ps -a. Der Worker zeigt Exited (1). docker logs worker nennt den Grund: In seiner Einstellungsdatei /settings/worker.conf fehlt die Zeile QUEUE_HOST. Fügen Sie ihr QUEUE_HOST=cache hinzu, und zwar aus einer Shell in web (docker exec -it web sh), führen Sie docker restart worker aus, und docker ps zeigt ihn als Up und gesund. Der Link Docker basics page unter „In Ihrem Browser“ zeigt die Seite, die web ausliefert.

Was Lernende abgeben sollten

Die Ausgabe von docker ps -a vor der Reparatur und danach, die Zeile des Logs, die ihnen gesagt hat, was falsch war, und ein Satz dazu, welche der von ihnen geschriebenen Dateien das Stoppen des Labs überstehen würde und warum. Letzteres zeigt, ob sie das eigene Dateisystem eines Containers im Unterschied zu einem Volume verstanden haben.

Eine Grundlagenlektion zu diesem Lab

Docker Basics ist eine kleine Lektion, die in diesem Lab durchgearbeitet wird. Darin listet die lernende Person die Container mit docker ps -a auf, liest das Log des Workers, gibt die Einstellungsdatei aus web heraus aus, fügt die fehlende Zeile hinzu, startet den Worker neu und sieht ihn gesund. Danach stoppt und startet sie das Lab, um zu sehen, dass die Reparatur im benannten Volume erhalten blieb.

Kostenlose persönliche Konten haben sie im Modul „Basics“ auf der Startseite, jede Einrichtung kann sie aus dem Ordner „Basics“ der Bibliothek kopieren, und eine neue Einrichtung startet mit ihr in einem Modul namens Lab Basics (Sample). Sie ist bewusst klein: Sie zeigt einer Lehrkraft, was eine in einem Lab durchgearbeitete Lektion ist, und das Lab erledigt den Rest. Kopieren Sie sie in ein eigenes Modul, um sie zu ändern.

Der Code auf GitHub

Die Compose-Datei enthält kein Dockerfile: Sie führt zwei öffentliche Standard-Images aus, nginx und Valkey, beide auf eine Version festgelegt, und schreibt in ihrem eigenen Entrypoint, was jeder Dienst tut, sodass sich alles in einer Datei lesen lässt. Das nginx-Image steht unter BSD-2-Clause und Valkey unter BSD-3-Clause; beides wird von uns nicht verteilt. Eine lernende Person kann in einem Lab nie einen Container erstellen, herunterladen, bauen oder entfernen, das Lab verlangt es also nicht; diese Befehle funktionieren auf Ihrem eigenen Rechner.

Als Arbeit stellen

Beschreiben Sie in der Aufgabe, was abzugeben ist.

  1. Lab erstellen. Fügen Sie in Ihrem Modul eine Aufgabe hinzu und wählen Sie die Karte „Container-Lab“, dann „In einem GitHub-Repository“. Geben Sie https://github.com/mitsurutech/lab-docker-basics mit dem Branch main an. Die Compose-Datei ist standardmäßig compose.yaml. Forken Sie das Repository zuerst, wenn Sie sie ändern möchten.
  2. Veröffentlichen und ausprobieren. „Veröffentlichen“ legt den Commit fest, der Ihnen gezeigt wurde, sodass eine spätere Änderung im Repository ein bereits gestelltes Lab nicht verändert. Starten Sie zuerst Ihre eigene Kopie.
  3. Zuweisen. Weisen Sie es wie jede Aufgabe zu, auf Wunsch mit einem Fälligkeitsdatum, und beschreiben Sie in der Aufgabe, was zu tun ist und was abgegeben werden soll.
  4. Abgaben bewerten. Öffnen Sie die Kopie einer lernenden Person und ihre Abgabe, bewerten Sie sie und geben Sie sie mit einer Begründung zur Überarbeitung zurück, wenn mehr nötig ist.

Häufige Fragen

Warum steht der Worker nicht in docker ps?
Er stoppt sofort nach dem Start, weil seine Einstellung fehlt, und docker ps listet nur auf, was läuft. docker ps -a listet auch gestoppte Container auf, und docker logs worker gibt weiterhin aus, was er gesagt hat.
Welche docker-Befehle funktionieren im Terminal des Labs?
docker ps, docker logs, docker exec, docker restart und einige weitere, die nur die drei Container ansehen, etwa docker inspect. Nichts kann erstellt, heruntergeladen, gebaut oder entfernt werden, und docker volume und docker network werden abgelehnt.
Was ist nach dem Stoppen und Starten des Labs noch da?
Das benannte Volume, das /settings enthält, sodass ein reparierter Worker sofort gesund startet. Die Dateien, die eine lernende Person irgendwo sonst in einem Container geschrieben hat, sind weg.