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

Siehe auch#

  • hypervisor — Vergleich: Hypervisor-VMs vs. Container
  • cloud — Container als Baustein moderner Cloud-Architekturen
  • [[../06_it-sicherheit/backup-strategien]] — Datensicherung bei containerisierten Anwendungen

Ressourcen#