Hopp til innhold

Docker – Was ist Docker?

Skip to content

Dies ist ein maschinell übersetzter Text, der Fehler enthalten kann!

Was ist Docker?

Du sollst einen Webserver auf einem Linux-Server einrichten. Eine Möglichkeit besteht darin, den Webserversoftware und alle Abhängigkeiten direkt im Betriebssystem des Servers zu installieren. Mit Docker kannst du stattdessen ein fertiges Image abrufen und daraus eine Container erstellen.

Hier solltest du in der Lage sein, den Unterschied zwischen Image und Container zu erklären und darzustellen, was Docker zwischen einer Befehlszeile und einem laufenden Dienst tut. Du musst noch nichts installieren.

Bevor du beginnst: Kannst du den Unterschied zwischen einer VM und einem Container erklären? Falls du unsicher bist, starte bei [[Containervirtualisierung Level 1 - Container und virtuelle Maschinen|Container und virtuelle Maschinen]]. Dort siehst du auch, wie Docker innerhalb einer Linux-VM unter Proxmox laufen kann.

Stellung im Lerninhalt: Docker ist ein Werkzeug für Containervirtualisierung. Der [[Betriebssystem Level 3 - Kernel des Betriebssystems|Kernel des Betriebssystems]] erklärt, was die Container teilen. Die [[Betriebsarchitektur Level 0 - Betriebssystem, VM und Container|Übersichtskarte]] zeigt das Verhältnis zwischen Betriebssystem, VM, Container und Werkzeugen.

Docker ist das Werkzeug, die Container verwaltet

Docker kann Images erstellen und abrufen, Container erzeugen und starten sowie deren Netzwerke und Speicher verwalten. Auf einem Linux-Server übernimmt diese Aufgabe der Docker Engine.

Wenn Sie docker run eingeben, verwenden Sie den Kommandozeilenclient von Docker. Der Client sendet eine Anfrage an den Docker-Dienst, dockerd, der den Container verwaltet. In der Übungsinstallation laufen sowohl der Client als auch der Dienst innerhalb der Linux-VM.

Sie können den Befehl in der Konsole der VM in Proxmox oder in einer SSH-Sitzung auf derselben VM ausführen. Beide Wege steuern Docker in derselben VM. Docker Desktop ist ein anderes Produkt, das Docker-Werkzeuge in einer Desktop-Anwendung bündelt; es ist für das Serversetup hier nicht erforderlich.

Ein Image kann für mehrere Container verwendet werden

Das Image nginx:alpine wird zur Erstellung von zwei separaten Containern verwendet. Einer heißt min-nginx und läuft, während der andere test-nginx heißt und gestoppt ist. Das Image bleibt unabhängig von beiden bestehen.

Ein Image ist ein Paket mit Dateien, dem Programm und den Einstellungen, die zum Erstellen eines Containers verwendet werden. nginx:alpine ist ein Beispiel: nginx gibt den Imagennamen an, und alpine ist eine Tagge, eine Beschriftung, die auf eine Image-Variante verweist. Eine Tagge kann später auf eine neue Version verweisen.

Eine Containerinstanz ist eine eigenständige Instanz, die aus dem Image erstellt wurde, mit eigenem Namen, Zustand und schreibbaren Layer. Der Container kann erstellt, laufend oder gestoppt sein. Ein gestopptes Programm bedeutet daher nicht, dass der Container gelöscht wurde.

Das Image ändert sich nicht, wenn Sie eine Datei in der schreibbaren Ebene des Containers ändern. Wenn Sie einen anderen Container aus demselben Image erstellen, erhält dieser seine eigene schreibbare Ebene.

Woher kommt das Image?

Ein Containerregister (Registry) speichert und verteilt Images. Docker Hub und GitHub Container Registry sind zwei Beispiele.

Wenn ein Image im Registry vorhanden ist, aber nicht auf dem Server, kann es mit docker pull abgerufen werden. Man kann auch ein eigenes Image aus Quellcode und einer Dockerfile erstellen; dies wird in Stufe 2 behandelt.

Begriff Im Webserverbeispiel
Registry Docker Hub, von wo das Nginx-Image abgerufen werden kann.
Image nginx:alpine, das heruntergeladene Paket.
Container min-nginx, eine eigene Instanz, die aus dem Paket erstellt wurde.
Dienst Der Webserver, der während des Programmlaufs auf HTTP-Anfragen antwortet.

Was bedeuten die ersten Befehle?

Sie müssen dieses Beispiel nur jetzt lesen. Installation und praktische Umsetzung finden sich in Level 1 wieder.

docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps

Der erste Befehl lädt das Image herunter. Der zweite erstellt und startet den Container min-nginx und verbindet Port 8080 des Servers mit Port 80 des Containers. Der dritte zeigt laufende Container an. Nginx ist die Software, die Anfragen bearbeitet; Docker verwaltet die Umgebung, in der sie läuft.

Voraussehen, was übrig bleibt

Sie haben ein Image und zwei Container daraus. Sie stoppen und entfernen nur min-nginx.

  1. Existiert das Image noch?
  2. Verschwindet auch test-nginx?
  3. Können Sie einen neuen Container aus dem Image erstellen?

Prüfen Sie die Antwort: Das Image existiert weiterhin und test-nginx wurde nicht entfernt. Sie können einen neuen Container aus demselben Image erstellen. Dateien, die sich lediglich in der schreibbaren Schicht von min-nginx befanden, sind jedoch verschwunden, wenn dieser Container entfernt wird.

Sobald Sie den Unterschied mit eigenen Worten erklären und im Beispiel Register, Image, Container und Dienst identifizieren können, sind Sie bereit für Stufe 1. Wenn Sie Image und Container verwechseln, verwenden Sie die Abbildung und versuchen Sie es erneut mit anderen Containernamen. Wenn Sie mehr untersuchen möchten, erklären Sie, warum docker ps allein weder anzeigt, ob das Image vorhanden ist, noch, ob ein gestoppter Container immer noch gespeichert ist.

Weiterführende Informationen

[[Docker Level 1 - Einstieg|Installiere Docker Engine]]. Verwende die [[Containerisierung Level 1 - Container und virtuelle Maschinen|Ressource zur Containerisierung]] als Unterstützung, wenn Sie den Bezug zu virtuellen Maschinen (VMs) und Virtualisierung verstehen möchten.

Quellen: Docker-Architektur, Image und Lebenszyklus eines Containers. Die Abbildung wurde für diese Ressource erstellt.