← Alle Fragen
Was ist Docker und wie funktioniert es?
OftAnfängerDevOps

Was ist Docker und wie funktioniert es?

Kurzantwort
Docker ist eine offene Plattform zum Packen und Ausführen von Anwendungen als Container: isolierte Prozesse, die den Linux-Kernel des Hosts gemeinsam nutzen (über Namespaces und Cgroups) anstatt eine vollständige virtuelle Maschine zu benötigen. Es verwendet ein Client-Server-Modell: das Der docker-Client sendet Befehle über eine REST-API an den dockerd-Daemon, der erstellt Images und führt daraus Container aus.

Warum es existiert. Mit Docker können Sie eine Anwendung mit all ihren Abhängigkeiten (Bibliotheken, Konfiguration, Laufzeit) in ein einziges Artefakt – ein Image – packen und es identisch auf einem Entwickler-Laptop, in CI und in der Produktion ausführen. Dies löst das klassische Problem „Funktioniert auf meinem Computer“.

Container vs. virtuelle Maschinen. Eine VM virtualisiert Hardware und liefert ein komplettes Gastbetriebssystem mit seinem eigenen Kernel. Ein Container ist ein isolierter Prozess, der den Kernel des Hosts verwendet. Dadurch sind Container leichter, starten in Sekundenbruchteilen und verbrauchen weniger Ressourcen. Aber ein Container ist keine leichte VM: Er ist an den Host-Kernel gebunden und seine Isolationsgrenze ist schwächer als die einer VM. Eine VM verfügt über eine durch Hardware erzwungene Isolation, wohingegen eine Schwachstelle im gemeinsam genutzten Kernel potenziell aus einem Container umgangen werden kann – das ist der Kompromiss zwischen Geschwindigkeit und Dichte. Der Host muss zum Containertyp passen: Linux-Container benötigen einen Linux-Kernel, Windows-Container benötigen einen Windows-Kernel. Unter macOS und Windows führt Docker Desktop transparent eine kleine Linux-VM aus (z. B. über WSL2), sodass dortige Linux-Container den Kernel dieser VM und nicht den Kernel Ihres Betriebssystems gemeinsam nutzen.

Architektur (Client-Server). Laut Docker-Dokumentation:

  • Der docker-Client ist die primäre Art und Weise, wie Benutzer mit Docker interagieren. Befehle wie docker run werden an den Daemon gesendet.
  • Der dockerd-Daemon „nimmt die schwere Arbeit“ des Erstellens, Ausführens und Verteilens von Containern wahr und verwaltet Objekte wie Bilder, Container, Netzwerke und Volumes.
  • Der Client kommuniziert mit dem Daemon über eine REST-API über einen UNIX-Socket oder eine Netzwerkschnittstelle, sodass sie auf verschiedenen Maschinen ausgeführt werden können.
  • Eine Registrierung speichert Bilder; Der standardmäßige öffentliche ist Docker Hub.

Bilder und Container. Eine praktische Analogie: Ein Bild ist wie eine Klasse (oder ein Programm auf der Festplatte), und ein Container ist eine Instanz davon (ein laufender Prozess); Sie können viele Container von einem Image aus starten.

  • Ein Bild ist eine schreibgeschützte Vorlage mit Anweisungen zum Erstellen eines aus Ebenen erstellten Containers. Es wird durch eine Docker-Datei definiert; Wenn Sie es ändern, werden nur die geänderten Ebenen neu erstellt.
  • Ein Container ist eine ausführbare Instanz eines Images. Zusätzlich zu den schreibgeschützten Ebenen des Bildes wird eine dünne beschreibbare Ebene hinzugefügt (Kopieren beim Schreiben); Alles, was dort geschrieben wird, geht verloren, wenn der Container entfernt wird – und genau aus diesem Grund benötigen persistente Daten Volumes.

Wie Isolation funktioniert (unter der Haube). Dockerd ruft den Kernel nicht direkt auf – es delegiert die Container-Lebenszyklusverwaltung an containerd, der eine OCI-Laufzeit aufruft; In Docker ist der Standardwert runc, aber die Laufzeit ist austauschbar (crun, gVisor, Kata usw.). Die eigentliche Isolation ergibt sich aus den Linux-Kernel-Funktionen:

  • Namespaces isolieren Ressourcen (laut Man7-Seite gibt es 8 Typen: PID, Netzwerk, Mount, UTS, IPC, Benutzer, cgroup, Zeit). Ein Prozess „sieht“ nur seine eigenen PIDs, seinen eigenen Netzwerkstapel usw.
  • cgroups (Kontrollgruppen) begrenzen und berücksichtigen die Ressourcennutzung (CPU, Speicher, E/A).

Häufige Folgemaßnahmen. Bildebenen werden zwischengespeichert; docker compose führt Multi-Container-Apps aus; Daten bleiben über Volumes bestehen (ein Container ist standardmäßig kurzlebig); und OCI standardisiert das Bildformat (image-spec), die Laufzeit (runtime-spec) und das Registrierungsverteilungsprotokoll (distribution-spec) – diese drei Spezifikationen halten das Ökosystem interoperabel.

ContainerDocker

Jetzt herunterladen und kostenlos für deine Aufgaben ausprobieren!

Für Windows herunterladen
10 15 kostenlose Credits • Keine Kreditkarte erforderlichVersion: Laden…

Ohne Installation - herunterladen und starten. Ohne Registrierung - mit Google anmelden.