Zuletzt aktualisiert am 04.12.2025 6 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 ausfuehren. Diese Container enthalten alles, was eine Anwendung benoetigt: Code, Laufzeitumgebung, Bibliotheken und Systemtools. Docker wurde 2013 veroeffentlicht und hat die Art, wie Software entwickelt, verteilt und betrieben wird, grundlegend veraendert.

Geschichte und Entwicklung von Docker

Docker wurde im Maerz 2013 vom Unternehmen dotCloud als Open-Source-Projekt veroeffentlicht. 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 gepraegt von schnellem Wachstum und einer breiten Akzeptanz in der IT-Industrie. Hier sind die wichtigsten Stationen:

  • 2013: Docker wird als Open Source veroeffentlicht; dotCloud benennt sich in Docker Inc. um
  • 2014: Docker Engine 1.0 erscheint; Docker wird Teil von Red Hat Enterprise Linux 7.0
  • 2015: Gruendung der Open Container Initiative (OCI) zur Standardisierung; Kubernetes 1.0 wird veroeffentlicht
  • 2016: Docker Swarm wird in die Docker Engine integriert; Docker laeuft auf Windows 10 Pro via Hyper-V
  • 2017: Docker Enterprise erscheint; containerd wird an die Cloud Native Computing Foundation gespendet
  • 2019: Mirantis uebernimmt Docker Enterprise; Docker Desktop laeuft 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 auszufuehren. Im Gegensatz zu virtuellen Maschinen, die ein komplettes Gastbetriebssystem benoetigen, 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 fuer die Isolation von Prozessen, Netzwerk und Dateisystem. Cgroups (Control Groups) limitieren und ueberwachen die Ressourcennutzung wie CPU und Speicher. Diese Technologien existierten schon vor Docker, aber Docker machte sie durch eine benutzerfreundliche Schnittstelle zugaenglich.

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

Diese Kombination ermoeglicht 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 ueber 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 Herztueck 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 gemaess OCI-Spezifikation

Images und Container

Ein Docker Image ist eine schreibgeschuetzte Vorlage, die alle Anweisungen zur Erstellung eines Containers enthaelt. Images bestehen aus mehreren Schichten (Layers), die uebereinander gestapelt werden. Ein Container ist eine laufende Instanz eines Images - er fuegt eine beschreibbare Schicht hinzu, in der Aenderungen 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, Abhaengigkeiten 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. Waehrend Hypervisoren komplette Betriebssysteme virtualisieren, arbeiten Container auf einer hoeheren Abstraktionsebene und teilen sich den Host-Kernel.

Aspekt Docker Container Virtuelle Maschine
Startzeit Sekunden Minuten
Speicherverbrauch MBs (nur Anwendung + Abhaengigkeiten) GBs (inkl. Gast-OS)
Performance Native (minimaler Overhead) Virtualisierungs-Overhead
Isolation Prozess-Isolation (Kernel wird geteilt) Vollstaendige Hardware-Isolation
Portabilitaet Sehr hoch ("Build once, run anywhere") Eingeschraenkt (OS-abhaengig)
Dichte Hunderte pro Host moeglich Typisch Dutzende pro Host

Container eignen sich besonders fuer Microservices und schnelle Skalierung. VMs bleiben die bessere Wahl, wenn hoechste Isolation erforderlich ist oder verschiedene Betriebssysteme auf demselben Host laufen sollen.

Wichtige Docker-Komponenten

Docker Hub

Docker Hub ist die offizielle Registry fuer Docker Images. Hier findest du Tausende vorgefertigte Images fuer Datenbanken, Webserver, Programmiersprachen und mehr. Du kannst auch eigene Images veroeffentlichen und mit anderen teilen.

Docker Compose

Mit Docker Compose definierst du Multi-Container-Anwendungen in einer YAML-Datei. Statt jeden Container einzeln zu starten, genuegt 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 fuer 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) enthaelt Docker Desktop auch ein integriertes Kubernetes-Dashboard.

Grundlegende Docker-Befehle

Die Kommandozeile ist das primaere Werkzeug fuer die Arbeit mit Docker. Hier sind die wichtigsten Befehle fuer 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" gehoert der Vergangenheit an
  • CI/CD-Pipelines: Automatisierte Tests und Deployments laufen in reproduzierbaren Container-Umgebungen
  • Microservices: Jeder Service laeuft in einem eigenen Container und kann unabhaengig 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

Fuer den Betrieb vieler Container in Produktionsumgebungen brauchst du eine Orchestrierungsloesung. Kubernetes hat sich als De-facto-Standard durchgesetzt. Es uebernimmt das automatische Deployment, die Skalierung und das Management containerisierter Anwendungen.

Docker selbst bietet mit Docker Swarm eine eigene, einfachere Orchestrierungsloesung. Swarm ist direkt in Docker integriert und eignet sich fuer kleinere Deployments. Fuer groessere Produktionsumgebungen setzen die meisten Unternehmen jedoch auf Kubernetes.

Docker-Alternativen

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

  • Podman: Daemon-lose Alternative von Red Hat, die Docker-Befehle 1:1 unterstuetzt
  • containerd: Die Container-Runtime, die auch in Docker verwendet wird, kann eigenstaendig genutzt werden
  • LXC/LXD: Aeltere Linux-Container-Technologie, die als Grundlage fuer Docker diente

Docker in der IT-Praxis

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

Entwickler nutzen Docker, um konsistente Entwicklungsumgebungen aufzusetzen. Systemintegratoren setzen Container fuer das Deployment und die Skalierung von Anwendungen ein. Das Verstaendnis von Container-Konzepten, Dockerfiles und grundlegenden Docker-Befehlen gehoert heute zum Standardwissen in vielen IT-Berufen.

Quellen und weiterfuehrende Links