Container (Docker)

Container machen Anwendungen mitsamt ihrer Umgebung portabel und wiederholbar.

Eine Technologie, die Anwendungen mit allen Abhängigkeiten in isolierte, portable Pakete verpackt – damit sie überall gleich laufen.

Fortgeschritten2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Verpackt Anwendung + Abhängigkeiten in ein portables, isoliertes Paket
  2. Docker ist die populärste Container-Plattform
  3. Standard für ML-Model-Serving, Microservices und CI/CD-Pipelines

Sofortantwort

Container einfach erklärt

Technologie zur Isolation und Portabilität von Anwendungen.

Kurz gesagt
Verpackt Anwendung + Abhängigkeiten in ein portables, isoliertes Paket
Typischer Einsatz
ML-Model-Serving, Entwicklungsumgebung, Microservices
Wichtig zu wissen
Standard für ML-Model-Serving, Microservices und CI/CD-Pipelines

Container im Überblick

Docker ist die Technologie, die das “Works on my machine”-Problem gelöst hat. Ein Docker-Container verpackt eine Anwendung zusammen mit allen Abhängigkeiten – Python-Version, Bibliotheken, Konfiguration – in eine portable Einheit. Dieser Container läuft identisch auf jedem System, das Docker unterstützt. Für KI-Projekte ist Docker unverzichtbar: ML-Modelle haben oft sehr spezifische Abhängigkeiten (CUDA-Version, PyTorch-Version), die in Containern zuverlässig reproduziert werden.

Docker verpackt deine Anwendung mit allem, was sie braucht, in einen Container. Dieser Container läuft überall gleich – auf deinem Laptop, im Rechenzentrum oder in der Cloud.

Warum ist das wichtig?

“Works on my machine” ist Geschichte. Mit Docker hat jeder exakt dieselbe Umgebung – gleiche Python-Version, gleiche Bibliotheken, gleiche Konfiguration.

Dockerfile → Image → Container:

Dockerfile (Bauplan) → docker build → Image (Vorlage) → docker run → Container (laufend)

Beispiel Dockerfile für ML:

FROM python:3.11
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "serve.py"]

Technisch betrachtet

Container vs. VM

AspektContainerVM
StartzeitSekundenMinuten
GrößeMBsGBs
OverheadMinimalHoch
IsolationProzess-LevelHardware-Level
OSTeilt Host-KernelEigenes OS

Docker für ML/KI

  • GPU-Support: --gpus all für NVIDIA GPU-Zugriff
  • NVIDIA Container Toolkit: CUDA und cuDNN im Container
  • Multi-Stage Builds: Kleine Production-Images durch Build-Stages
  • Volume Mounts: Modelle und Daten außerhalb des Containers speichern

Schritt für Schritt

Eine Anwendung als Container bereitstellen

Ein Container trennt den Bauplan einer Anwendung von der konkreten Maschine, auf der sie später läuft.

  1. Laufzeit beschreiben

    Bauplan

    Ein Bauplan definiert Betriebssystembasis, Abhängigkeiten, Startbefehl und die Dateien der Anwendung.

    anwendung + abhaengigkeiten + startbefehl
  2. Image erzeugen

    Image

    Aus dem Bauplan entsteht ein versioniertes Image, das unverändert verteilt werden kann.

    bauplan -> build -> versioniertes image
  3. Image prüfen

    Prüfung

    Automatisierte Tests und Sicherheitsprüfungen bestätigen, dass die Anwendung in der vorgesehenen Umgebung funktioniert.

    image -> tests + sicherheitscheck
  4. Container ausführen

    Betrieb

    Die Infrastruktur startet aus dem Image eine laufende Instanz mit klarer Konfiguration und begrenzten Rechten.

    image + konfiguration -> laufender container

Konkretes Beispiel

Gleiche Umgebung für Entwicklung und Betrieb

Ein Team betreibt eine kleine API für ein KI-gestütztes Produkt.

Installation auf jeder Maschine

Bibliotheken und Konfigurationen werden manuell eingerichtet. Ein Update funktioniert in der Entwicklung, aber nicht im Betrieb.

Versioniertes Container-Image

Die getestete Laufzeit wird als Image bereitgestellt. Entwicklung, Test und Betrieb verwenden dieselbe Grundlage.

Container machen die Umgebung zu einem überprüfbaren Teil des Produkts.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Wiederholbare Laufzeit: Anwendung und Abhängigkeiten sind gemeinsam versioniert und reproduzierbar.
  • Klare Isolation: Dienste lassen sich mit eigenen Konfigurationen und Ressourcen voneinander trennen.
  • Einfachere Übergaben: Ein geprüftes Image kann über verschiedene Umgebungen hinweg genutzt werden.
  • Gute Automatisierbarkeit: Build, Test und Release lassen sich auf denselben Bauplan stützen.

Das solltest du beachten

  • Images brauchen Pflege: Abhängigkeiten und Basisimages müssen regelmäßig aktualisiert und geprüft werden.
  • Daten gehören nicht ins Image: Persistente Daten und Zugangsinformationen brauchen eigene sichere Wege.
  • Ressourcen sind begrenzt: CPU, Speicher und bei KI auch GPU-Zugriff müssen passend konfiguriert werden.
  • Kein Ersatz für Orchestrierung: Viele Container auf vielen Maschinen benötigen zusätzliche Betriebsmechanismen.
Vertiefung · für Fortgeschrittene

Vom Bauplan zur laufenden Anwendung

Container trennen die unveränderliche Anwendungsvorlage von ihrer konkreten Ausführung.

Wissenskarte

isolierte laufende Anwendung

Ein Image ist die geprüfte Vorlage; ein Container ist ihre konkrete, konfiguriert gestartete Ausführung. Container gliedert sich in: Dockerfile, Abhängigkeiten, Image, Registry, Konfiguration, Laufzeit.

01Einsatzbereiche

Wann ist Container sinnvoll?

Geeignet für

  • ML-Model-ServingML-Modelle mit allen Dependencies in einem Container deployen
  • Entwicklungsumgebung'Works on my machine' eliminieren – alle nutzen denselben Container
  • MicroservicesJeder Service in einem eigenen Container, unabhängig deploybar
  • CI/CDReproduzierbare Build- und Test-Umgebungen

↑ Inhalt

02Werkzeuge

Womit Container umgesetzt wird

↑ Inhalt

Merksatz

Ein Container ist wie ein Schiffscontainer

Egal was drin ist und wohin er transportiert wird – er passt auf jedes Schiff, jeden LKW und jeden Kran. Die Anwendung läuft überall gleich, unabhängig von der Umgebung.

  1. Verpackt Anwendung + Abhängigkeiten in ein portables, isoliertes Paket
  2. Docker ist die populärste Container-Plattform
  3. Standard für ML-Model-Serving, Microservices und CI/CD-Pipelines

03Wissensnetz

Diese Begriffe brauchst du ebenfalls

Nicht „ähnliche Artikel", sondern die Rolle, die jeder Begriff für Container spielt.

↑ Inhalt

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu Container

Was ist der Unterschied zwischen Container und VM?

VMs virtualisieren die gesamte Hardware inkl. Betriebssystem (schwer, langsam zu starten). Container teilen sich den Host-Kernel und virtualisieren nur die Anwendungsebene (leicht, startet in Sekunden). Container sind effizienter, VMs bieten stärkere Isolation.

Brauche ich Docker für KI-Projekte?

Für Produktion fast immer ja. Docker stellt sicher, dass dein Modell mit exakt den richtigen Python-Versionen, CUDA-Treibern und Bibliotheken läuft. Für lokale Entwicklung ist es optional aber empfehlenswert.

Wie kann ich ein Docker-Container-Image erstellen?

Um ein Docker-Container-Image zu erstellen, brauchst du eine Dockerfile, die die Anweisungen zum Erstellen des Images enthält. Mit dem Befehl 'docker build' kannst du dann das Image aus der Dockerfile erstellen und es lokal oder in einem Registry speichern.

Was sind die Vorteile von Docker-Containern gegenüber virtuellen Maschinen?

Docker-Container sind leichter und schneller als virtuelle Maschinen, da sie den Kernel des Hosts gemeinsam nutzen und keine vollständige Betriebssysteminstanz benötigen. Dies führt zu schnelleren Startzeiten und einem geringeren Ressourcenverbrauch.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

  • Grundlage nachholen

    Application Programming Interface

    Schnittstelle zur Kommunikation zwischen Softwaresystemen.

  • Technisch vertiefen

    DevOps

    Eine Praxis, die Softwareentwicklung und IT-Betrieb vereint.

↑ Inhalt