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

Eine Anwendung im Container betreiben (Docker)

Nach dieser Lektion: Ich kann eine Anwendung in einem Container starten und mir ihr Inneres ansehen.

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

Auf meinem Laptop lief es noch

Eine Entwicklerin baut eine kleine Shop-Anwendung auf ihrem Laptop. Sie läuft einwandfrei. Auf dem Firmenserver bricht sie ab, weil dort eine Bibliothek älter ist.

Niemand hat etwas falsch gemacht. Die beiden Rechner waren nur verschieden. Ein Container liefert die Anwendung samt allem, was sie braucht. So läuft sie überall gleich.

Am Ende dieser Lektion

Notiz

Ich kann eine Anwendung in einem Container starten und mir ihr Inneres ansehen.

Schlüsselbegriffe

BegriffWas er bedeutetBeispiel
Imageein schreibgeschütztes Paket mit einem Programm und allem, was es braucht
Containereine laufende Kopie eines Images mit eigenen Dateien und Prozessen
Tagder Teil nach dem Doppelpunkt, der die Version eines Images benennt1.27-alpine
Porteine Nummer, unter der ein Programm auf Verbindungen wartet80
Volumeein Ordner außerhalb des Containers, der erhalten bleibt

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

Image ist das Rezept, Container das Gericht

Ein Image ist ein Paket. Es enthält ein Programm, die nötigen Dateien und einen Hinweis, wie es startet. Ein Image ändert sich nie.

Ein Container entsteht, wenn Sie ein Image starten. Aus einem Image können Sie viele Container starten, so wie ein Rezept viele Gerichte ergibt.

Ihr Lab hat drei Container. Listen Sie sie mit dem folgenden Befehl auf.

Alle Container auflisten

Befehl
docker ps -a

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: eine Zeile lesen

SpalteWas sie verrätIn Ihrem Lab
IMAGEaus welchem Image der Container gestartet wurdeweb nutzt nginx, cache nutzt valkey
STATUSläuft, gestoppt oder angeschlagenUp, Exited oder healthy
PORTSdie Ports, an denen das Programm auf Verbindungen wartet80/tcp bei web
NAMESder Name, den Sie in anderen Befehlen tippenweb, cache, worker

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

Ein Container hat seine eigene Sicht

Im Container sieht das Programm nur seine eigenen Dateien und seine eigene Prozessliste. Die Dateien der anderen Container bleiben ihm verborgen.

Mit docker exec führen Sie einen Befehl in einem laufenden Container aus. Die nächsten drei Befehle sehen in web hinein, den Container, der eine Webseite ausliefert.

Prozesse in web auflisten

Befehl
docker exec web ps

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

Den Server nach seiner Version fragen

Befehl
docker exec web nginx -v

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

Den Ordner der Webseite auflisten

Befehl
docker exec web ls /usr/share/nginx/html

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

Ein häufiger Irrtum

Warnung

Viele halten einen Container für eine kleine virtuelle Maschine. Das stimmt nicht. Ein Container ist ein gewöhnlicher Prozess des Hosts, dem eigene Dateien und eine eigene Prozessliste gezeigt werden. Er teilt sich den Kernel mit dem Host. Brauchen Sie ein anderes Betriebssystem, wählen Sie eine virtuelle Maschine.

Woher stammen die Dateien von web?

Befehl
docker exec web head -n 1 /etc/os-release

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

web nach seinem Kernel fragen

Befehl
docker exec web uname -r

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

Ihr eigenes Terminal dasselbe fragen

Befehl
uname -r

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

Ports lassen Besuch ein, Volumes bewahren Dateien

Ein Webserver wartet an Port 80. Andere Container im Netz des Labs erreichen ihn über seinen Namen web.

Die eigenen Dateien eines Containers halten nur so lange wie er selbst. Ersetzen Sie den Container oder stoppen Sie das Lab, sind sie weg.

Ein Volume ist ein Ordner außerhalb des Containers. Das Lab hält einen unter /settings.

Den Webport über seinen Namen besuchen

Befehl
curl -s -o /dev/null -w "%{http_code}\n" http://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 Datei im Container anlegen

Befehl
docker exec web touch /tmp/notiz.txt

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

Sie dort ansehen

Befehl
docker exec web ls /tmp

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

Das Volume ansehen, ohne es zu ändern

Befehl
docker exec web ls /settings

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

Weiterführend

Zählen Sie die Zeilen nginx: worker process in der Ausgabe von docker exec web ps. Führen Sie dann docker exec web nproc aus. Der Befehl nennt die Zahl der Prozessoren, die der Container sieht.

Vergleichen Sie die beiden Zahlen. Erklären Sie, warum nginx wohl so viele Worker startet und wem diese Prozessoren gehören.

Ü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.