Docker
Docker ist eine Container-Plattform, die Anwendungen mit allen Abhängigkeiten in isolierte, portable Einheiten verpackt.
Was ist Docker?
Docker ist eine Open-Source-Plattform für die Containerisierung von Anwendungen. Ein Container verpackt eine Anwendung mit allen Abhängigkeiten (Libraries, Runtime, Konfiguration) in eine isolierte Einheit, die überall gleich läuft - auf dem Entwickler-Laptop, im CI/CD-System und auf Produktionsservern. "Works on my machine" gehört damit der Vergangenheit an.
Ausführliche Erklärung
Docker ist eine Open-Source-Plattform für die Containerisierung von Anwendungen. Ein Container verpackt eine Anwendung mit allen Abhängigkeiten (Libraries, Runtime, Konfiguration) in eine isolierte Einheit, die überall gleich läuft - auf dem Entwickler-Laptop, im CI/CD-System und auf Produktionsservern. "Works on my machine" gehört damit der Vergangenheit an.
Der Unterschied zu virtuellen Maschinen: Container teilen sich den Host-Kernel und sind dadurch extrem leichtgewichtig (MB statt GB), starten in Sekunden statt Minuten und verbrauchen weniger Ressourcen. Ein Server kann Hunderte Container statt weniger VMs hosten. Dockerfiles definieren reproduzierbar, wie ein Container gebaut wird. Docker Compose orchestriert mehrere Container (App + Datenbank + Cache) als Einheit.
Docker hat die Softwareentwicklung revolutioniert. Entwicklungsumgebungen werden reproduzierbar, Deployments konsistent, Skalierung einfach. Für komplexe Produktionsumgebungen wird Docker oft mit Kubernetes kombiniert. Bei HEADON.pro nutzen wir Docker für alle Projekte - lokale Entwicklung und Produktion laufen identisch, was Bugs durch Umgebungsunterschiede eliminiert.
Zentral ist die Unterscheidung zwischen Image und Container: Ein Image ist die unveränderliche, aus Layern aufgebaute Vorlage (definiert im Dockerfile über Befehle wie FROM, COPY, RUN), ein Container die laufende Instanz davon. Jede Dockerfile-Zeile erzeugt einen gecachten Layer - ändert sich eine frühe Zeile, müssen alle folgenden neu gebaut werden, weshalb man selten wechselnde Schritte (Abhängigkeiten installieren) vor häufig wechselnde (Quellcode kopieren) stellt. Multi-Stage-Builds trennen Build- von Laufzeit-Umgebung und halten das finale Image klein - im Nexus-Monorepo nutzt Dockerfile.web genau dieses Muster zusammen mit turbo prune.
Images werden über Registries verteilt (Docker Hub oder, wie bei Nexus, ghcr.io) und per Tag versioniert. Persistente Daten gehören in Volumes statt in den kurzlebigen Container-Layer, und Container kommunizieren über definierte Docker-Netzwerke - ein Grundprinzip, das Datenbanken vom öffentlichen Internet abschottet. Für Produktionsbetrieb über einen einzelnen Host hinaus übernimmt eine Orchestrierung wie Kubernetes oder Docker Swarm Skalierung, Self-Healing und Rolling Updates. Sicherheitsrelevant ist, Container nicht als root laufen zu lassen, schlanke Base-Images (alpine) zu verwenden und Secrets nie ins Image zu backen, sondern zur Laufzeit als Umgebungsvariablen einzuspeisen. Ein verbreiteter Irrtum ist, Docker mit einer virtuellen Maschine gleichzusetzen - Container virtualisieren nur den Prozessraum, nicht die gesamte Hardware, und teilen sich den Kernel des Hosts.
Vorteile & Nutzen
- Konsistente Umgebungen von Entwicklung bis Produktion
- Schnelle, reproduzierbare Deployments
- Isolierung von Anwendungen für bessere Sicherheit
- Effiziente Ressourcennutzung gegenüber VMs
Verwandte Begriffe
Möchten Sie Docker in Ihrem Projekt einsetzen?
Unser Expertenteam berät Sie gerne, welche Technologien und Ansätze für Ihr konkretes Projekt am besten geeignet sind.