Docker
Was ist Docker?
Docker ist eine Open-Source-Softwareplattform zum Erstellen, Bereitstellen und Verwalten von Anwendungen in virtualisierten Umgebungen, die als Container bezeichnet werden. Diese Container sind leichtgewichtige, portable und autarke Pakete, die alles enthalten, was eine Anwendung zum Ausführen benötigt, wie Code, Bibliotheken, Laufzeitumgebung und System-Tools. Container gewährleisten eine konsistente Leistung in verschiedenen Umgebungen, indem sie die Anwendung und ihre Abhängigkeiten kapseln.
Die Docker-Containertechnologie wurde 2013 eingeführt. Zu diesem Zeitpunkt wurde Docker Inc. gegründet, um eine kommerzielle Version der Containermanagementsoftware zu unterstützen und als Hauptsponsor einer Open-Source-Version zu fungieren. Mirantis hat das Docker-Enterprise-Geschäft im November 2019 übernommen.
Docker bietet Softwareentwicklern eine schnellere und effizientere Möglichkeit, containerisierte Teile einer gesamten Softwareanwendung zu erstellen und zu testen. Dadurch können Entwickler in einem Team mehrere Softwarekomponenten gleichzeitig erstellen. Jeder Container enthält alle Elemente, die zum Erstellen einer Softwarekomponente erforderlich sind, und stellt sicher, dass diese reibungslos erstellt, getestet und bereitgestellt wird. Docker ermöglicht Portabilität, sodass diese gepackten Container auf verschiedene Server oder Entwicklungsumgebungen verschoben werden können.
So funktioniert Docker
Docker paketiert Container, stellt diese bereit und führt sie aus. Die Containertechnologie ist über das Betriebssystem (OS) verfügbar: Ein Container paketiert den Anwendungsdienst oder die Funktion mit allen Bibliotheken, Konfigurationsdateien, Abhängigkeiten und anderen Teilen und Parametern, die für den Betrieb erforderlich sind. Jeder Container nutzt die Dienste eines zugrunde liegenden Betriebssystems. Docker Images enthalten alle Abhängigkeiten, die zur Ausführung von Code innerhalb eines Containers erforderlich sind, sodass Container, die zwischen Docker-Umgebungen mit demselben Betriebssystem verschoben werden, ohne Änderungen funktionieren.
Docker nutzt die Ressourcenisolierung im Kernel des Betriebssystems, um mehrere Container auf demselben Betriebssystem auszuführen. Dies unterscheidet sich von virtuellen Maschinen (VMs), die ein gesamtes Betriebssystem mit ausführbarem Code auf einer abstrakten Ebene physischer Hardwareressourcen kapseln.
Docker wurde für Linux entwickelt. Es wurde aber erweitert, um eine bessere Unterstützung für Nicht-Linux-Betriebssysteme wie Microsoft Windows und Apple macOS zu bieten. Es sind Versionen von Docker für Amazon Web Services (AWS), Google Cloud und Microsoft Azure verfügbar.

Warum ist Docker so verbreitet?
Docker hat aufgrund seiner Fähigkeit, Abläufe zu optimieren und die Softwareentwicklung und -bereitstellung zu transformieren, an Popularität gewonnen. Hier sind einige wichtige Gründe, warum Docker so weit verbreitet ist:
- einfache Verwendung: Mit Docker lassen sich Container einfach zum Erstellen, Bereitstellen und Verwalten von Anwendungen nutzen. Die einfache Benutzeroberfläche und die benutzerfreundlichen Befehlszeilen-Tools helfen Entwicklern, Docker schnell zu erlernen und in ihren Arbeitsabläufen einzusetzen.
- Portabilität: Docker-Container verpacken eine Anwendung zusammen mit ihren Abhängigkeiten und gewährleisten so einen konsistenten Betrieb in verschiedenen Umgebungen. Docker-Container können auf jedem System ausgeführt werden, das Docker unterstützt, sei es auf dem Notebook eines Entwicklers, einem Testserver oder in einer Cloud-Umgebung wie AWS, Google Cloud oder Azure. Dank dieser Portabilität können Entwickler Anwendungen auf ihren lokalen Rechnern erstellen und problemlos in die Produktion übernehmen, ohne sich um Umgebungsunterschiede kümmern zu müssen.
- leicht und effizient: Docker-Container sind im Vergleich zu herkömmlichen VMs schlank, da sie den Kernel des Host-Betriebssystems gemeinsam nutzen. Dies führt zu einer besseren Ressourcennutzung, sodass mehr Container auf einem einzigen Host ausgeführt werden können, was insbesondere in Cloud-Umgebungen von Vorteil ist.
- schnelle Entwicklung und Bereitstellung: Docker ermöglicht kontinuierliche Integration/kontinuierliche Bereitstellung (CI/CD) und damit schnellere Entwicklungszyklen. So können Entwickler Anwendungen schnell erstellen, testen und bereitstellen, was die Markteinführungszeit verkürzt.
- Community und Ökosystem: Docker verfügt über eine große und aktive Community, die zu einem reichhaltigen Ökosystem aus Tools, Bibliotheken und Ressourcen beiträgt. Dank der Community-Unterstützung finden Entwickler leichter Antworten auf Probleme, können Best Practices austauschen und an Projekten zusammenarbeiten.
- Integration mit DevOps-Praktiken: Docker eignet sich gut für moderne DevOps-Praktiken, da es die Zusammenarbeit zwischen Entwicklungs- und Betriebsteams fördert. Es unterstützt auch Automatisierungs- und Orchestrierungs-Tools wie Kubernetes, die seine Fähigkeit zur Verwaltung containerisierter Anwendungen in großem Maßstab verbessern.
Wichtige Anwendungsfälle für Docker
Obwohl es technisch möglich ist, Docker für die Entwicklung und Bereitstellung jeder Art von Softwareanwendung zu verwenden, ist es am nützlichsten für folgende Zwecke:
- kontinuierliche Bereitstellung von Software: Die Docker-Technologie und bewährte DevOps-Praktiken ermöglichen die Bereitstellung containerisierter Anwendungen in wenigen Sekunden. Diese Fähigkeit unterscheidet sich von herkömmlichen, sperrigen, monolithischen Anwendungen, die viel länger benötigen. Aktualisierungen oder Änderungen am Code einer Anwendung werden schnell ausgeführt und bereitgestellt, wenn Container verwendet werden, die Teil einer größeren CI/CD-Pipeline sind.
- Aufbau einer Microservices-Architektur: Wenn eine Microservices-Architektur vorteilhafter ist als eine herkömmliche monolithische Anwendung, ist Docker ideal für den Aufbau dieser Architektur. Entwickler erstellen und implementieren mehrere Microservices, jeweils in einem eigenen Container. Anschließend integrieren sie diese mithilfe eines Containerorchestrierungs-Tools wie Docker Swarm zu einer vollständigen Softwareanwendung.
- Migration von Legacy-Anwendungen in eine containerisierte Infrastruktur: Ein Entwicklungsteam, das eine bereits vorhandene Legacy-Softwareanwendung modernisieren möchte, kann Docker verwenden, um die Anwendung auf eine containerisierte Infrastruktur umzustellen.
- Hybrid-Cloud- und Multi-Cloud-Anwendungen ermöglichen: Docker-Container funktionieren unabhängig davon, ob sie On-Premises oder mithilfe von Cloud-Computing-Technologie bereitgestellt werden. Daher können Anwendungen mit Docker problemlos in die Produktions- und Testumgebungen verschiedener Cloud-Anbieter verschoben werden. Eine Docker-Anwendung, die mehrere Cloud-Angebote nutzt, kann als Hybrid Cloud oder Multi-Cloud betrachtet werden.
- Schnellstart für maschinelles Lernen und Datenwissenschaft: Docker wird zunehmend in Projekten im Bereich KI und maschinelles Lernen (ML) eingesetzt. Durch die Paketierung von Code, Bibliotheken und Abhängigkeiten in Containern bietet es eine konsistente Umgebung für die Durchführung von Experimenten, das Trainieren von Modellen und die Bereitstellung von Anwendungen, was für die Reproduzierbarkeit in Datenwissenschafts-Workflows von entscheidender Bedeutung ist.
- Durchführung von Tests und Qualitätssicherung (QS): Docker bietet Vorteile für automatisierte Tests, da Teams isolierte Testumgebungen schnell bereitstellen und wieder abbauen können. Diese Funktion stellt sicher, dass Tests zuverlässig in einem sauberen Zustand ausgeführt werden, ohne dass manuelle Eingriffe erforderlich sind. Die leichtgewichtigen Container von Docker starten außerdem schnell, sodass parallele Tests effizient durchgeführt werden können, was den gesamten Testprozess beschleunigt.
Docker-Architektur: Komponenten und Tools
Die Docker Community Edition ist Open Source, während die Docker Enterprise Edition eine kommerzielle Version ist, die von Docker Inc. angeboten wird. Docker besteht aus verschiedenen Komponenten und Tools, die beim Erstellen, Verifizieren und Verwalten von Containern helfen.
Zu den wichtigsten Komponenten und Tools der Docker-Architektur gehören:
- Content Trust: Dieses Sicherheits-Tool dient zur Überprüfung der Integrität von Remote-Docker-Registrys anhand von Benutzersignaturen und Image-Tags.
- Daemon: Der Daemon bietet eine Client-seitige Befehlszeilenschnittstelle (CLI), über die Benutzer über die Docker-Programmierschnittstelle (API) mit dem Daemon interagieren können. Von Docker erstellte Container basieren auf Docker-Images, die mithilfe sogenannter Dockerfiles definiert werden. Diese Dateien enthalten Anweisungen, um ein Image mit allen benötigten Abhängigkeiten zu bauen. Docker-Compose-Dateien definieren die Zusammensetzung der Komponenten in einem Docker-Container.
- Docker Build Cloud: Dieses Tool nutzt die Cloud-Infrastruktur, um den Build-Prozess zu verbessern und zu beschleunigen. Es lässt sich in CI/CD-Tools wie GitHub Actions integrieren, um optimierte Workflows für die Erstellung und Bereitstellung von Anwendungen zu ermöglichen.
- Docker-Client: Der Docker-Client ist die primäre Schnittstelle für Benutzer zur Interaktion mit Docker. Er ermöglicht es Benutzern, Docker-Befehle über eine CLI oder eine grafische Benutzeroberfläche (GUI) an den Docker-Daemon zu senden. Der Client kommuniziert mit dem Daemon, um Container, Images und Netzwerke zu verwalten.
- Docker Compose: Dieses Tool wird verwendet, um Multicontainer-Anwendungsdienste zu konfigurieren, den Status von Containern anzuzeigen, die Protokollausgabe zu streamen und Einzelinstanzprozesse auszuführen.
- Docker-Container: Ein Container ist eine ausführbare Instanz eines Docker-Images. Er kapselt die Anwendung und ihre Abhängigkeiten und bietet eine isolierte Umgebung für die Ausführung.
- Docker Desktop: Docker Desktop bietet eine benutzerfreundliche Oberfläche für die Verwaltung von Docker-Containern auf lokalen Rechnern. Es enthält Tools zum Erstellen, Ausführen und Freigeben von containerisierten Anwendungen und ist damit eine hervorragende Wahl für Entwickler, die in ihrer lokalen Umgebung arbeiten.
- Docker Engine: Docker Engine ist die zugrunde liegende Technologie, die die Aufgaben und Workflows beim Erstellen containerbasierter Anwendungen übernimmt. Die Engine erstellt einen serverseitigen Daemon-Prozess, der Images, Container, APIs, Netzwerke und Storage-Volumes hostet.
- Docker Hub: Mit diesem Software-as-a-Service-Tool (SaaS) können Benutzer containerbasierte Anwendungen über eine gemeinsame Bibliothek veröffentlichen und freigeben. Der Dienst umfasst mehr als 100.000 öffentlich verfügbare Anwendungen sowie öffentliche und private Container-Registrys.
- Docker-Image: Ein Docker-Image dient als Blaupause für einen Container. Ein Image ist ein leichtgewichtiges, eigenständiges und ausführbares Paket, das alles enthält, was zum Ausführen einer Software erforderlich ist, einschließlich Code, Laufzeitumgebung, Bibliotheken und Umgebungsvariablen. Images werden aus einer Reihe von Anweisungen erstellt, die in einer Dockerfile-Datei definiert sind.
- Docker Machine: Docker Machine ist ein Tool zur Bereitstellung und Verwaltung von Docker-Hosts auf verschiedenen Cloud-Plattformen oder lokalen Hypervisoren wie Oracle VirtualBox und VMware. Es automatisiert den Prozess der Erstellung und Konfiguration von Docker-Hosts auf lokalen oder Remote-Systemen.
- Docker Swarm: Dieses Tool ist Teil der Docker Engine und unterstützt das Load Balancing von Clustern für Docker. Mehrere Docker-Host-Ressourcen werden in Swarm zu einer Einheit zusammengefasst, sodass Benutzer Containerbereitstellungen schnell auf mehrere Hosts skalieren können.
- Docker Trusted Registry (DTR): Hierbei handelt es sich um ein Repository, das Docker Hub ähnelt, jedoch über eine zusätzliche Ebene der Kontrolle und Eigentumsrechte für die Speicherung und Verteilung von Container-Images verfügt.
- Universal Control Plane (UCP): Hierbei handelt es sich um eine webbasierte, einheitliche Schnittstelle für die Cluster- und Anwendungsverwaltung.

Vor- und Nachteile von Docker
Docker hat sich als De-facto-Standardplattform für die schnelle Zusammenstellung, Erstellung, Bereitstellung, Skalierung und Überwachung von Containern auf Docker-Hosts etabliert. Neben der effizienten Entwicklung containerisierter Anwendungen bietet Docker folgende weitere Vorteile:
- hohe Portabilität, sodass Benutzer Container auf verschiedenen Hosts registrieren und gemeinsam nutzen können.
- geringerer Ressourcenverbrauch
- schnellere Bereitstellung im Vergleich zu VMs
- Versionskontrolle für Docker-Images, wodurch es einfach ist, verschiedene Versionen einer Anwendung zu verwalten und bei Bedarf auf frühere Versionen zurückzugreifen

Docker bringt jedoch auch potenzielle Probleme mit sich, darunter die folgenden:
- Die Anzahl der in einem Unternehmen möglichen Container kann schwierig zu verwalten sein.
- Die Verwendung von Containern entwickelt sich von granularem virtuellem Hosting hin zur Orchestrierung von Anwendungskomponenten und Ressourcen. Infolgedessen werden die Verteilung und die Verbindung von komponentenbasierten Anwendungen zu großen Herausforderungen.
- Da Container den Kernel des Host-Betriebssystems gemeinsam nutzen, kann es ohne ordnungsgemäße Verwaltung zu Containersicherheitsproblemen und Schwachstellen kommen.
- Docker-Container verursachen aufgrund von Faktoren wie Virtualisierung, Netzwerk- und Storage-Treibern einen gewissen Performance-Overhead. Dieser Overhead ist zwar nicht besonders auffällig, kann jedoch bei ressourcenintensiven Anwendungen ein Problem darstellen.
- Docker Engine wird in erster Linie als Befehlszeilen-Tool ausgeführt, während Docker Desktop eine grafische Benutzeroberfläche bietet. Die Verwaltung groß angelegter Bereitstellungen erfolgt jedoch häufig über die Befehlszeile oder andere Verwaltungs-Tools. Diese Abhängigkeit von der Befehlszeilensyntax kann für Benutzer, die eher an grafische Benutzeroberflächen gewöhnt sind, eine Herausforderung darstellen.
- Da sich das Docker-Ökosystem rasch weiterentwickelt, kann die Dokumentation hinter den neuesten Funktionen und Änderungen zurückbleiben, was zu Verwirrung bei den Benutzern führen kann.
- Die Einführung von Docker bedeutet für Teams, die mit den Konzepten und Tools der Containerisierung nicht vertraut sind, eine gewissen Lernaufwand, was möglicherweise Schulungen und Anpassungsphasen erfordert.
Docker-Sicherheit
Ein seit langem bestehendes Problem bei Containern – und damit auch bei Docker – ist die Sicherheit. Trotz ihrer hervorragenden logischen Isolierung teilen sich Container immer noch das Betriebssystem des Hosts. Ein Angriff oder eine Schwachstelle im zugrunde liegenden Betriebssystem kann potenziell alle Container gefährden, die auf diesem Betriebssystem ausgeführt werden. Schwachstellen können den Zugriff und die Autorisierung, Container-Images und den Netzwerkverkehr zwischen Containern betreffen. Docker-Images können standardmäßig Root-Zugriff auf den Host behalten, obwohl dies häufig aus Paketen von Drittanbietern übernommen wird.
Docker hat die Plattform regelmäßig um Sicherheitsverbesserungen erweitert, darunter Image-Scans, die Einführung sicherer Knoten, kryptografische Knotenidentitäten, Cluster-Segmentierung und die sichere Verteilung geheimer Daten. Die Verwaltung geheimer Daten in Docker ist auch in Kubernetes sowie in CISOfy Lynis, D2iQ und HashiCorp Vault verfügbar. Verschiedene Tools zum Scannen der Containersicherheit wurden von Aqua Security, SUSE Security und anderen Anbietern entwickelt.
Hier sind einige Best Practices, die zur Verbesserung der Docker-Sicherheit verwendet werden können:
- Ausführen von Containern innerhalb einer VM: Einige Unternehmen führen Container innerhalb einer VM aus, obwohl Container keine VMs erfordern. Dies löst zwar nicht das Problem der gemeinsam genutzten Ressourcen, mindert jedoch die potenziellen Auswirkungen einer Sicherheitslücke.
- Verwendung von Low-Profile-VMs: Eine weitere Alternative ist die Verwendung von Low-Profile- oder Micro-VMs, die nicht den gleichen Overhead wie eine reguläre VM erfordern. Beispiele hierfür sind Firecracker, gVisor und Kata Containers. Der wichtigste und empfohlene Schritt zur Gewährleistung der Containersicherheit ist jedoch, Container-Hosts nicht dem Internet auszusetzen und nur Container-Images aus bekannten Quellen zu verwenden.
- Verwendung von offiziellen und vertrauenswürdigen Images: Es ist wichtig, Images immer aus seriösen Quellen wie den offiziellen Repositorys von Docker Hub zu beziehen, um das Risiko von Schwachstellen zu minimieren.
- Vermeidung von Root-Rechten: Das Ausführen von Docker-Containern als Root vereinfacht die Ersteinrichtung, da komplexe Berechtigungsverwaltung umgangen wird, stellt jedoch ein erhebliches Sicherheitsrisiko dar und hat in der Produktion nur wenige triftige Gründe. Obwohl Docker standardmäßig nicht als Root ausgeführt wird, sollten Unternehmen die Vergabe von Root-Rechten ausdrücklich vermeiden.
- Überwachung der Containerprotokollaktivitäten: Unternehmen sollten die Containeraktivitäten kontinuierlich überwachen und Protokolle führen, um Anomalien zu erkennen und schnell auf Sicherheitsvorfälle reagieren zu können.
Alternativen zu Docker, Ökosystem und Standardisierung
Im Laufe der Jahre hat sich Docker zu einem grundlegenden Tool für die Containerisierung entwickelt, aber es ist bei weitem nicht die einzige verfügbare Option. Das breitere Containerökosystem umfasst eine Reihe von Tools von Drittanbietern, konkurrierenden Plattformen und offenen Standards, die die Entwicklung, Bereitstellung und Verwaltung moderner Anwendungen geprägt haben.
Im Folgenden finden Sie eine Übersicht über die wichtigsten Alternativen zu Docker und die Standardisierungsinitiativen, die zur Förderung der Kompatibilität und Konsistenz in der Containerlandschaft entstanden sind:
- Alternativen zu Docker: Es gibt Tools von Drittanbietern, die mit Docker für Aufgaben wie Containermanagement und Clustering zusammenarbeiten. Das Docker-Ökosystem umfasst eine Mischung aus Open-Source-Projekten und proprietären Technologien, wie beispielsweise das Open-Source-Projekt Kubernetes, die proprietäre OpenShift-Paketierung von Kubernetes durch Red Hat und die Distribution von Kubernetes durch Canonical, die als pure upstream Kubernetes bezeichnet wird.
- Dockers Wettbewerb mit anderen Containerplattformen: Docker konkurriert mit proprietären Anwendungscontainern wie VMware vApp und Infrastruktur-Abstraktions-Tools wie Chef. Docker ist nicht die einzige verfügbare Containerplattform, aber nach wie vor der größte Name auf dem Containermarkt. Neben Docker gibt es weitere proprietäre und Open-Source-Containerplattformen wie Podman, containerd und nerdctl, Linux Containers, runc und Rancher Desktop.
- Rolle bei der Standardisierung von Containern: Docker spielte auch eine führende Rolle bei einer Initiative zur formelleren Standardisierung der Containerpaketierung und -Verteilung namens Open Container Initiative, die gegründet wurde, um ein gemeinsames Containerformat und eine gemeinsame Laufzeitumgebung zu fördern. Mehr als 40 Anbieter aus der Containerindustrie sind Mitglieder der Open Container Initiative, darunter AWS, Intel und Red Hat.
Geschichte des Unternehmens Docker
Docker hat sich schnell von einer Platform-as-a-Service-Komponente (PaaS) zu einer Schlüsseltechnologie in der Softwareentwicklung und -bereitstellung entwickelt, deren Schwerpunkt auf der Bereitstellung umfassender Tools und sicherer Workflows für Entwickler liegt. Im Folgenden finden Sie eine Zeitleiste mit den wichtigsten Ereignissen in der Geschichte von Docker:
- März 2013: Docker wurde erstmals als Open-Source-Plattform bei dotCloud als Projekt veröffentlicht. Docker Engine 1.0 wurde 2014 eingeführt. Im Jahr 2016 integrierte Docker seine Swarm-Orchestrierung in die Docker Engine in Version 1.12. Das übergeordnete Ziel von Docker war es, sein Geschäft mit Containern als Service auszubauen, doch schließlich wurden diese Pläne durch den Aufstieg von Kubernetes überholt.
- März 2017: Docker Enterprise wurde eingeführt. Im selben Jahr spendete das Unternehmen sein Containerlaufzeitprogramm containerd an die Cloud Native Computing Foundation.
- November 2019: Mirantis erwarb die Docker-Produkte und das geistige Eigentum rund um Docker Engine. Die Übernahme umfasste Enterprise, DTR, UCP und Docker CLI sowie das kommerzielle Produkt Docker Swarm. Mirantis gab zunächst bekannt, dass es seinen Fokus auf Kubernetes verlagern und schließlich den Support für Docker Swarm einstellen werde, bekräftigte jedoch später seine Absicht, die Plattform weiterhin zu unterstützen und neue Funktionen zu entwickeln. Das verbleibende Unternehmen Docker Inc. konzentriert sich nun auf Docker Desktop und Docker Hub.
- Januar 2022: Docker Desktop steht Unternehmen nicht mehr zur kostenlosen Nutzung zur Verfügung. Für die Nutzung von Desktop in Unternehmen ist ein kostenpflichtiges Abonnement erforderlich: genauer gesagt für Unternehmen mit mehr als 250 Mitarbeitern oder einem Umsatz von mehr als zehn Millionen US-Dollar. Für Privatpersonen und kleine Unternehmen ist jedoch eine kostenlose Version verfügbar.
- Oktober 2023: Docker ist eine Partnerschaft mit LangChain, Neo4j und Ollama eingegangen, um GenAI Stack auf den Markt zu bringen. Damit können Entwickler mit minimalem Aufwand eine umfassende generative KI-Umgebung (GenAI) bereitstellen und so die Entwicklung von KI-Anwendungen optimieren.
- Januar 2024: Docker führte Docker Cloud Build ein, einen Cloud-basierten Build-Service, der die Erstellung von Images um das bis zu 39-Fache beschleunigt. Er lässt sich nahtlos in Docker Desktop integrieren und unterstützt native Multiarchitektur-Builds, wodurch CI/CD-Workflows verbessert werden.
- Februar 2025: Don Johnson wurde zum CEO von Docker ernannt und tritt damit die Nachfolge von Scott Johnston an, um die nächste Phase der Innovation und des Wachstums des Unternehmens zu leiten, wobei der Schwerpunkt auf Entwickler-Workflows, einschließlich der Integration von KI/ML, liegt.
Docker auf einen Blick
Docker ist eine Open-Source-Plattform zur Containerisierung von Anwendungen. Sie ermöglicht das Erstellen, Bereitstellen und Ausführen isolierter Container, die alle benötigten Abhängigkeiten enthalten. Docker ist leichtgewichtig, portabel und effizient, was die Softwareentwicklung und -bereitstellung beschleunigt. Es wird häufig für Microservices, CI/CD, Tests und Cloud-Anwendungen verwendet. Docker unterstützt DevOps-Praktiken und bietet zahlreiche Tools wie Docker Engine, Compose, Hub und Swarm.