Zuletzt aktualisiert am 05.12.2025 7 Minuten Lesezeit

Docker (Container-Plattform)

Docker ist eine Open-Source-Plattform zur Containerisierung von Anwendungen. Mit Docker kannst du Software in standardisierten Einheiten, sogenannten Containern, verpacken und ausführen. Diese Container enthalten alles, was eine Anwendung benötigt: Code, Laufzeitumgebung, Bibliotheken und Systemtools. Docker wurde 2013 veröffentlicht und hat die Art, wie Software entwickelt, verteilt und betrieben wird, grundlegend verändert.

Geschichte und Entwicklung von Docker

Docker wurde im März 2013 vom Unternehmen dotCloud als Open-Source-Projekt veröffentlicht. Der erste Commit im Git-Repository stammt vom 19. Januar 2013 und umfasste 1.146 Zeilen Code. Die Technologie war so erfolgreich, dass sich dotCloud am 29. Oktober 2013 in Docker Inc. umbenannte.

Wichtige Meilensteine

Die Entwicklung von Docker war geprägt von schnellem Wachstum und einer breiten Akzeptanz in der IT-Industrie. Hier sind die wichtigsten Stationen:

  • 2013: Docker wird als Open Source veröffentlicht; dotCloud benennt sich in Docker Inc. um
  • 2014: Docker Engine 1.0 erscheint; Docker wird Teil von Red Hat Enterprise Linux 7.0
  • 2015: Gründung der Open Container Initiative (OCI) zur Standardisierung; Kubernetes 1.0 wird veröffentlicht
  • 2016: Docker Swarm wird in die Docker Engine integriert; Docker läuft auf Windows 10 Pro via Hyper-V
  • 2017: Docker Enterprise erscheint; containerd wird an die Cloud Native Computing Foundation gespendet
  • 2019: Mirantis übernimmt Docker Enterprise; Docker Desktop läuft auf Windows Home via WSL2
  • 2025: Docker Desktop 4.51.0 mit Docker Engine 28.x ist die aktuelle Version

Funktionsweise von Docker

Docker nutzt Betriebssystem-Funktionen des Linux-Kernels, um Anwendungen in isolierten Umgebungen auszuführen. Im Gegensatz zu virtuellen Maschinen, die ein komplettes Gastbetriebssystem benötigen, teilen sich Container den Kernel des Host-Systems. Das macht sie deutlich leichtgewichtiger und schneller.

Technologische Grundlagen

Docker basiert auf zwei zentralen Linux-Kernel-Technologien: Namespaces sorgen für die Isolation von Prozessen, Netzwerk und Dateisystem. Cgroups (Control Groups) limitieren und überwachen die Ressourcennutzung wie CPU und Speicher. Diese Technologien existierten schon vor Docker, aber Docker machte sie durch eine benutzerfreundliche Schnittstelle zugänglich.

Komponente Funktion
Namespaces Isolation von Prozessen, Netzwerk, Dateisystem und Benutzern
Cgroups Limitierung von CPU, RAM und I/O-Ressourcen
Union Filesystems Schichtbasiertes Dateisystem für effiziente Image-Speicherung
containerd Low-Level Container-Runtime, die Container startet und verwaltet

Diese Kombination ermöglicht es, Hunderte oder sogar Tausende Container auf einem einzigen Host zu betreiben - bei gleichzeitig minimaler Startzeit von wenigen Sekunden.

Docker-Architektur

Docker verwendet eine Client-Server-Architektur. Der Docker Client kommuniziert über eine REST-API mit dem Docker Daemon, der die eigentliche Arbeit erledigt: Container erstellen, starten, stoppen und verwalten.

Docker Engine

Die Docker Engine ist das Herzstück der Plattform. Sie besteht aus mehreren Komponenten, die zusammenarbeiten:

  • Docker Daemon (dockerd): Der Hintergrunddienst, der Docker-Objekte wie Images, Container und Netzwerke verwaltet
  • Docker CLI: Das Kommandozeilen-Tool, mit dem du Docker bedienst
  • containerd: Die Container-Runtime, die den Lebenszyklus von Containern steuert
  • runc: Startet Container gemäß OCI-Spezifikation

Images und Container

Ein Docker Image ist eine schreibgeschützte Vorlage, die alle Anweisungen zur Erstellung eines Containers enthält. Images bestehen aus mehreren Schichten (Layers), die übereinander gestapelt werden. Ein Container ist eine laufende Instanz eines Images - er fügt eine beschreibbare Schicht hinzu, in der Änderungen gespeichert werden.

# Beispiel Dockerfile
FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 8000
CMD ["python", "app.py"]

Dieses Dockerfile zeigt den typischen Aufbau: Ein Basis-Image wird erweitert, Abhängigkeiten werden installiert und der Anwendungscode wird kopiert.

Docker vs. Virtuelle Maschinen

Der wesentliche Unterschied zwischen Docker und klassischer Virtualisierung liegt in der Art der Isolation. Während Hypervisoren komplette Betriebssysteme virtualisieren, arbeiten Container auf einer höheren Abstraktionsebene und teilen sich den Host-Kernel.

Aspekt Docker Container Virtuelle Maschine
Startzeit Sekunden Minuten
Speicherverbrauch MBs (nur Anwendung + Abhängigkeiten) GBs (inkl. Gast-OS)
Performance Native (minimaler Overhead) Virtualisierungs-Overhead
Isolation Prozess-Isolation (Kernel wird geteilt) Vollständige Hardware-Isolation
Portabilität Sehr hoch ("Build once, run anywhere") Eingeschränkt (OS-abhängig)
Dichte Hunderte pro Host möglich Typisch Dutzende pro Host

Container eignen sich besonders für Microservices und schnelle Skalierung. VMs bleiben die bessere Wahl, wenn höchste Isolation erforderlich ist oder verschiedene Betriebssysteme auf demselben Host laufen sollen.

Wichtige Docker-Komponenten

Docker Hub

Docker Hub ist die offizielle Registry für Docker Images. Hier findest du Tausende vorgefertigte Images für Datenbanken, Webserver, Programmiersprachen und mehr. Du kannst auch eigene Images veröffentlichen und mit anderen teilen.

Docker Compose

Mit Docker Compose definierst du Multi-Container-Anwendungen in einer YAML-Datei. Statt jeden Container einzeln zu starten, genügt ein einziger Befehl, um alle Services hochzufahren:

# docker-compose.yml
services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: geheim
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Docker Desktop

Docker Desktop ist die Desktop-Anwendung für Windows und macOS. Sie bringt alles mit, was du zum lokalen Entwickeln brauchst: Docker Engine, Docker CLI, Docker Compose und ein grafisches Interface. Seit Version 4.51.0 (November 2025) enthält Docker Desktop auch ein integriertes Kubernetes-Dashboard.

Grundlegende Docker-Befehle

Die Kommandozeile ist das primäre Werkzeug für die Arbeit mit Docker. Hier sind die wichtigsten Befehle für den Einstieg:

# Image von Docker Hub herunterladen
docker pull nginx:latest

# Container starten
docker run -d -p 80:80 --name webserver nginx

# Laufende Container anzeigen
docker ps

# Container stoppen
docker stop webserver

# Container entfernen
docker rm webserver

# Eigenes Image erstellen
docker build -t meine-app:1.0 .

# In laufenden Container einloggen
docker exec -it webserver /bin/bash

# Container-Logs anzeigen
docker logs webserver

Einsatzgebiete

Docker hat sich in vielen Bereichen der IT etabliert. Die Vorteile von konsistenten Umgebungen und schneller Bereitstellung machen es zum Standard in der modernen Softwareentwicklung.

  • Entwicklungsumgebungen: Jeder Entwickler arbeitet mit identischen Umgebungen - "Works on my machine" gehört der Vergangenheit an
  • CI/CD-Pipelines: Automatisierte Tests und Deployments laufen in reproduzierbaren Container-Umgebungen
  • Microservices: Jeder Service läuft in einem eigenen Container und kann unabhängig skaliert werden
  • Cloud-Deployments: Container lassen sich nahtlos in Cloud-Plattformen wie AWS, Azure oder Google Cloud betreiben
  • Lokale Datenbanken und Services: Schnell PostgreSQL, Redis oder Elasticsearch lokal starten, ohne sie dauerhaft zu installieren

Docker und Orchestrierung

Für den Betrieb vieler Container in Produktionsumgebungen brauchst du eine Orchestrierungslösung. Kubernetes hat sich als De-facto-Standard durchgesetzt. Es übernimmt das automatische Deployment, die Skalierung und das Management containerisierter Anwendungen.

Docker selbst bietet mit Docker Swarm eine eigene, einfachere Orchestrierungslösung. Swarm ist direkt in Docker integriert und eignet sich für kleinere Deployments. Für größere Produktionsumgebungen setzen die meisten Unternehmen jedoch auf Kubernetes.

Docker-Alternativen

Neben Docker gibt es weitere Container-Technologien, die den OCI-Standard unterstützen und daher kompatibel mit Docker-Images sind:

  • Podman: Daemon-lose Alternative von Red Hat, die Docker-Befehle 1:1 unterstützt
  • containerd: Die Container-Runtime, die auch in Docker verwendet wird, kann eigenständig genutzt werden
  • LXC/LXD: Ältere Linux-Container-Technologie, die als Grundlage für Docker diente

Docker in der IT-Praxis

Docker ist aus dem modernen IT-Alltag nicht mehr wegzudenken. Wer als Fachinformatiker für Anwendungsentwicklung oder Fachinformatiker für Systemintegration arbeitet, wird mit hoher Wahrscheinlichkeit mit Container-Technologien in Berührung kommen.

Entwickler nutzen Docker, um konsistente Entwicklungsumgebungen aufzusetzen. Systemintegratoren setzen Container für das Deployment und die Skalierung von Anwendungen ein. Das Verständnis von Container-Konzepten, Dockerfiles und grundlegenden Docker-Befehlen gehört heute zum Standardwissen in vielen IT-Berufen.

Quellen und weiterführende Links