LF04

Container & Docker#

Container sind eine leichtgewichtige Virtualisierungsmethode, bei der Anwendungen mit allen ihren Abhängigkeiten in isolierten Umgebungen auf einem gemeinsamen Betriebssystem-Kernel laufen.


1. Grundprinzip#

┌──────────────────────────────────────────┐
│  Container A  │  Container B  │  Container C  │
│  App + Libs   │  App + Libs   │  App + Libs   │
├──────────────────────────────────────────┤
│         Container-Runtime (Docker)        │
├──────────────────────────────────────────┤
│           Host-Betriebssystem             │
├──────────────────────────────────────────┤
│               Hardware                    │
└──────────────────────────────────────────┘

Container teilen sich den Host-OS-Kernel, aber sind voneinander isoliert. Sie enthalten keine eigenes Betriebssystem (nur Bibliotheken + Anwendung).


2. Wichtige Begriffe#

BegriffBedeutung
ImageUnveränderliche Vorlage für einen Container (wie eine ISO-Datei)
ContainerLaufende Instanz eines Images
DockerfileTextdatei mit Bauanleitung für ein Image
RegistryZentrales Repository für Images (z.B. Docker Hub)
VolumePersistenter Speicher für Containerdaten
Port-MappingWeiterleitung von Host-Port an Container-Port
NamespaceLinux-Kernel-Feature für Isolation (Prozesse, Netz, Dateisystem)
cgroupRessourcenbegrenzung (CPU, RAM) für Container

3. Docker — wichtigste Befehle (Überblick)#

BefehlBeschreibung
docker pull nginxImage aus Registry herunterladen
docker run nginxContainer aus Image starten
docker psLaufende Container anzeigen
docker ps -aAlle Container (auch gestoppte)
docker stop <ID>Container stoppen
docker rm <ID>Container löschen
docker imagesAlle lokalen Images
docker rmi <ID>Image löschen
docker build -t name .Image aus Dockerfile bauen

4. Container vs. Virtuelle Maschine (VM)#

MerkmalContainerVM (Hypervisor)
Gast-OSNein (teilt Host-Kernel)Ja (eigenes OS)
StartzeitSekundenMinuten
GrößeMegabytesGigabytes
RessourcenverbrauchSehr geringHoch
IsolationProzess-IsolationVollständige OS-Isolation
SicherheitSchwächer (shared kernel)Stärker
EinsatzMicroservices, CI/CDVollständige Systemvirt.

5. Microservices & Container#

Container sind ideal für Microservice-Architekturen: Jede Anwendungsfunktion läuft als eigener Container.

flowchart LR
    subgraph Monolith
        M[Gesamte Anwendung\nin einem Prozess]
    end

    subgraph Microservices mit Containern
        A[Container:\nAuthentifizierung] 
        B[Container:\nDatenbank]
        C[Container:\nWebserver]
        D[Container:\nAPI-Gateway]
    end

Vorteile:

  • Einzelne Services können unabhängig aktualisiert werden
  • Skalierung einzelner Komponenten möglich
  • Fehler in einem Container beeinflussen andere nicht

6. Container-Orchestrierung#

Bei vielen Containern wird ein Orchestrierungssystem benötigt:

ToolBeschreibung
Docker ComposeMehrere Container mit einer Konfigurationsdatei (yaml) starten
Kubernetes (K8s)Verwaltung, Skalierung und Hochverfügbarkeit vieler Container
Docker SwarmEinfachere Alternative zu Kubernetes von Docker

7. Vor- und Nachteile von Containern#

VorteileNachteile
Schnell gestartet und gestopptSchwächere Isolation als VMs
RessourceneffizientShared Kernel = Sicherheitsrisiko
Portabel: läuft überall gleichStateful Anwendungen komplexer
Einfache SkalierungLernkurve für Orchestrierung
DevOps & CI/CD-freundlichPersistenz muss separat gelöst werden

Wichtige Hinweise für die Prüfung#

  • Container = kein eigenes OS, teilen Host-Kernel
  • VM = eigenes Gast-OS, stärkere Isolation
  • Image = Vorlage (unveränderlich), Container = laufende Instanz
  • Docker ist die bekannteste Container-Laufzeitumgebung
  • Kubernetes = Orchestrierung vieler Container im Produktivbetrieb

Prüfungsbeispiele#

„Warum starten Container in Sekunden, während virtuelle Maschinen mehrere Minuten zum Booten brauchen?"

→ Container haben kein eigenes Betriebssystem — sie teilen sich den Host-Kernel und müssen nur die Anwendung selbst starten. Eine VM muss ein komplettes Gast-Betriebssystem hochfahren.

„Was ist der Unterschied zwischen einem Docker-Image und einem Container?"

→ Das Image ist die unveränderliche Vorlage (vergleichbar mit einer ISO-Datei), der Container ist eine laufende Instanz dieses Images. Aus einem Image können beliebig viele Container gleichzeitig gestartet werden.

„Ein Unternehmen betreibt 50 Container und möchte sie automatisch skalieren und bei Ausfall neu starten lassen. Welches Werkzeug wird benötigt?"

→ Ein Orchestrierungssystem wie Kubernetes (K8s) — es übernimmt Skalierung, Hochverfügbarkeit und automatischen Neustart ausgefallener Container.


Quiz#

❓ Warum starten Container deutlich schneller als virtuelle Maschinen?
❓ Was ist der Unterschied zwischen einem Docker-Image und einem Container?
❓ Welche Linux-Kernel-Features ermöglichen die Isolation von Containern?
❓ Ein Unternehmen betreibt 50 Container und will sie automatisch skalieren und bei Ausfall neu starten lassen. Welches Werkzeug wird benötigt?

Siehe auch#

  • hypervisor — Vergleich: Hypervisor-VMs vs. Container
  • cloud — Container als Baustein moderner Cloud-Architekturen
  • backup strategien — Datensicherung bei containerisierten Anwendungen

Ressourcen#