coldwa.st
Alle LeitfädenProgrammierungWebDatenWerkzeugeDatenbankenHaskellKonzepteCabal & BuildsToolchainCompilerPerformanceEditor & HLS

Programmierung · DevOps · Container

Was ist Docker?

Von ColdwastAktualisiert am 19. Juni 20268 Min. Lesezeit#docker#containers#devops
Ein Containerschiff, beladen mit gestapelten Containern in einem Hafen, bei Nacht
Ein Containerschiff, beladen mit gestapelten Containern in einem Hafen, bei Nacht – Docker greift die Idee des Seecontainers auf: man packt eine App einmal, und sie läuft überall gleich.

„Auf meiner Maschine läuft es“ ist einer der ältesten Witze der Softwarewelt – und das Problem, das Docker ausräumen sollte. Docker packt eine Anwendung samt allem, was sie zum Laufen braucht, damit sie sich auf einem Laptop, der Maschine eines Kollegen und einem Produktionsserver gleich verhält. Dieser Leitfaden erklärt, was Docker ist, wie sich Container von virtuellen Maschinen unterscheiden, welche Konzepte zählen und wo Docker neben Werkzeugen wie Kubernetes steht.

Die kurze Definition

Docker ist eine Plattform zum Bauen, Teilen und Ausführen von Anwendungen in Containern. Ein Container bündelt Ihren Code und seine Abhängigkeiten – Bibliotheken, Runtime, Konfiguration – in eine isolierte und portable Einheit. Da der Container seine eigene Umgebung mitbringt, läuft er überall gleich, wo Docker installiert ist, und beseitigt die Bug-Kategorie „läuft hier, aber nicht dort“.

Container vs. virtuelle Maschinen

Beide isolieren Software, aber auf unterschiedlichen Ebenen. Eine virtuelle Maschine emuliert einen ganzen Computer, mit eigenem vollständigen Betriebssystem, über einem Hypervisor – mächtig, aber schwer: jede VM wiegt Gigabytes und startet langsam. Ein Container teilt den Betriebssystem-Kernel der Hostmaschine und packt nur die App und ihre Abhängigkeiten. Das Ergebnis ist viel leichter: Container wiegen typischerweise Megabytes, starten in Sekunden, und man kann auf derselben Hardware weit mehr davon betreiben.

Der Kompromiss ist die Isolation. VMs bieten eine stärkere Trennung, weil jede ihr eigenes OS hat; Container sind effizienter, teilen aber den Kernel, daher ist die Isolation gut statt absolut. Viele reale Systeme nutzen beides – Container, die in VMs in der Cloud laufen.

Ein Entwickler mit Kopfhörern arbeitet vor einem mit Code gefüllten Bildschirm, in einem dunklen, blau beleuchteten Raum
Ein Entwickler vor einem mit Code gefüllten Bildschirm – Docker lässt dieselbe containerisierte App ohne Überraschungen von diesem Laptop auf einen Server wandern.

Die Schlüsselkonzepte

  • Image – eine schreibgeschützte Vorlage, die definiert, was in einem Container steckt: die OS-Schichten, Ihre App und ihre Abhängigkeiten. Man baut ein Image einmal und startet mehrere Container daraus.
  • Container – eine laufende Instanz eines Images. Das ist der lebendige, isolierte Prozess; man kann ihn starten, stoppen und löschen, ohne das Image anzutasten.
  • Dockerfile – ein Klartext-Rezept, das die Schritte zum Bauen eines Images auflistet (von einer Basis ausgehen, Code kopieren, Abhängigkeiten installieren, Startbefehl festlegen). Es macht Builds reproduzierbar.
  • Registry – ein Repository für Images. Docker Hub ist die bekannteste öffentliche Registry; Teams betreiben auch private. Man pusht Images zum Teilen und zieht sie zum Ausführen.
  • Volume – ein Speicher, der außerhalb des Lebenszyklus des Containers lebt, damit Daten das Ersetzen eines Containers überstehen. Container sind wegwerfbar; Volumes bewahren, was bestehen bleiben muss.

Wie ein typischer Arbeitsablauf aussieht

Sie schreiben ein Dockerfile, bauen es zu einem Image und führen dieses Image als Container aus. Lokal starten Sie vielleicht einen einzigen Container; in der Produktion pushen Sie das Image in eine Registry und führen es auf Servern aus. Da das Image überall dasselbe Artefakt ist, ist die App, die Ihre Kollegen und Ihre Server ausführen, Byte für Byte die, die Sie getestet haben – das ist der ganze Sinn.

Warum Docker zählt

Es hat konsistente Umgebungen leicht gemacht, und das hat vieles freigeschaltet: zuverlässige Service-zu-Service-Deployments, schnelles Onboarding (ein Befehl statt einer Seite voller Konfigurationsschritte) und das Fundament von CI/CD-Pipelines und Microservices. Container sind heute die Standard-Deployment-Einheit in moderner Infrastruktur, was erklärt, warum das ganze Ökosystem – Registries, Orchestrierung, Cloud-Runtimes – „Container“ spricht.

Docker vs. Kubernetes

Sie werden oft zusammen genannt, lösen aber unterschiedliche Probleme. Docker baut und führt einzelne Container aus. Kubernetes ist ein Orchestrator: es führt und koordiniert viele Container über viele Maschinen – plant sie ein, startet fehlgeschlagene neu, skaliert hoch und runter und vernetzt sie. Kurz gesagt, Docker packt und führt einen Container aus; Kubernetes verwaltet eine Flotte. Man kann Docker ohne Kubernetes nutzen; Kubernetes führt Container aus, die nach demselben Standard gebaut sind, den Docker populär gemacht hat. Lesen Sie unseren vollständigen Leitfaden zu Kubernetes – und in jedem Fall brauchen Ihre Container einen Ort zum Laufen, in der Regel einen VPS.

Die ehrlichen Kompromisse

Docker ist nicht ohne Kosten. Container teilen den Host-Kernel: es ist also keine harte Sicherheitsgrenze wie eine VM – sensible Workloads wollen vielleicht Isolation auf VM-Niveau. Zustandsbehaftete Anwendungen (Datenbanken, alles mit wichtigen lokalen Daten) erfordern ein sorgfältiges Design von Volumes und Backups, da Container als wegwerfbar gedacht sind. Und es gibt eine Lernkurve: Images, Netzwerk und Volumes brauchen Zeit, um sie zu verinnerlichen. Für die meisten Teams lohnen sich Konsistenz und Geschwindigkeit dennoch.

FAQ

Ist Docker eine virtuelle Maschine? Nein. Eine VM emuliert einen ganzen Computer mit eigenem Betriebssystem; ein Docker-Container teilt den Kernel des Host-OS und packt nur die App und ihre Abhängigkeiten, was ihn viel leichter und schneller im Start macht.

Ist Docker kostenlos? Docker Engine, die Kerntechnologie, ist Open Source und kostenlos. Docker bietet auch kostenpflichtige Angebote für seine Desktop-Anwendung und seine Dienste in großen Organisationen, aber man kann Container bauen und ausführen, ohne zu zahlen.

Braucht man Docker, um Kubernetes zu nutzen? Nicht Docker das Produkt im Speziellen, aber man braucht Container. Kubernetes orchestriert Container, die nach offenen Standards gebaut sind, die Docker mitbegründet hat, daher übertragen sich die Fähigkeiten direkt.

Was ist ein Dockerfile? Eine Klartextdatei mit den Schritten zum Bauen eines Images – welche Basis nutzen, welchen Code kopieren, welche Abhängigkeiten installieren und welchen Befehl ausführen. Es macht Image-Builds reproduzierbar und lesbar.

Container sind die Einheit, auf der Deployments ruhen; die Apps darin stellen oft eine API bereit und werden in einer IDE geschrieben. Stöbern Sie in weiteren klaren Erklärungen in unserem Leitfaden-Index.

Häufige Fragen

Was ist Docker in einfachen Worten?

Docker ist ein Werkzeug, das eine Anwendung samt allem, was sie zum Laufen braucht – Code, Bibliotheken, Runtime und Konfiguration – in eine einzige portable Einheit namens Container packt. Dieser Container läuft dann auf jeder Maschine, auf der Docker installiert ist, gleich, sodass die Software sich auf dem Laptop eines Entwicklers und auf einem Produktionsserver identisch verhält.

Was ist der Unterschied zwischen einem Container und einer virtuellen Maschine?

Eine virtuelle Maschine emuliert einen ganzen Computer, inklusive vollständigem Betriebssystem: sie ist also voluminös (Gigabytes) und langsam im Start, aber stark isoliert. Ein Container teilt den Kernel des Host-Systems und bündelt nur die App und ihre Abhängigkeiten: er ist klein (Megabytes), startet in Sekunden und ist effizienter, mit guter, aber nicht absoluter Isolation. Viele Systeme führen Container in VMs aus, um beides zu vereinen.

Was ist der Unterschied zwischen Docker und Kubernetes?

Docker baut und führt einzelne Container aus. Kubernetes ist ein Orchestrierungssystem, das viele Container über viele Maschinen ausführt und koordiniert – Planung, Skalierung, Neustart und Vernetzung. Docker verwaltet einen Container; Kubernetes verwaltet eine Flotte. Sie ergänzen sich, statt zu konkurrieren.

Wird Docker 2026 noch genutzt?

Ja. Container sind die Standard-Deployment-Einheit in moderner Software, und das Ökosystem – Registries, CI/CD-Pipelines, Cloud-Runtimes und Orchestratoren wie Kubernetes – ist um das Container-Modell herum gebaut, das Docker populär gemacht hat. Der Kern Docker Engine bleibt Open Source und weit verbreitet.

Unabhängiger, von der Community gepflegter Leitfaden. coldwa.st ist eine Programmier-Ressourcenseite; dieser Artikel ist ein neuer und origineller erklärender Text über Docker und Container. Die Beispiele spiegeln weit verbreitete Werkzeuge wider; prüfen Sie die Details in der offiziellen Docker-Dokumentation.