Mobile-Menu

Definition Was ist Docker?

Von Dipl.-Ing. (FH) Stefan Luber 4 min Lesedauer

Docker ist der Name einer Software, mit der sich Anwendungen inklusive ihrer Anwendungsumgebung virtualisiert in Containern ausführen lassen. Die Virtualisierung des Betriebssystems wie bei einer virtuellen Maschine ist nicht notwendig. Auf einem Host-System können viele Container parallel und isoliert voneinander betrieben werden. Die Software ist Open Source und steht unter Apache-Lizenz 2.0. Neben Linux unterstützt Docker mittlerweile die Betriebssysteme Windows und macOS.

Die wichtigsten IT-Fachbegriffe verständlich erklärt.(Bild:  © aga7ta - stock.adobe.com)
Die wichtigsten IT-Fachbegriffe verständlich erklärt.
(Bild: © aga7ta - stock.adobe.com)

"Docker" hat mehrere synonyme Verwendungen. Der Name wird zum einen für die Softwareplattform Docker verwendet, mit der sich Anwendungen inklusive ihrer Anwendungsumgebung virtualisiert in Containern betreiben lassen, und zum anderen für das US-amerikanische Unternehmen Docker Inc., das verschiedene Dienstleistungen und kommerzielle Produkte rund um die Virtualisierungslösung anbietet.

Die Software Docker wurde ursprünglich von dotCloud entwickelt und 2013 veröffentlicht. dotCloud benannte sich kurze Zeit später zu Docker Inc. um. Die Software ist Open Source und steht unter Apache-Lizenz 2.0.

In Docker-Containern lassen sich virtualisierte Anwendungen über das gemeinsam genutzte Betriebssystem eines Host-Rechners isoliert voneinander betreiben. Ein Container enthält alle zur Ausführung der Anwendung benötigten Ressourcen wie Laufzeitumgebung, Systembibliotheken, Programmcode und Systemwerkzeuge. Der Container lässt sich in Form eines Images wie eine Datei speichern oder auf andere Rechner übertragen.

Ursprünglich wurde Docker nur von Linux unterstützt. Mittlerweile lässt es sich auch auf Rechnern mit Windows- oder macOS-Betriebssystem nutzen. In komplexen Umgebungen mit vielen verschiedenen in Containern virtualisierten Services, wie sie für Cloud-native, Microservice-basierte Anwendungen benötigt werden, werden zur Verwaltung und Überwachung der vielen gleichzeitig zu betreibenden Container Orchestrierungslösungen wie Docker Swarm oder Kubernetes (K8s) genutzt.

Docker zählte lange Zeit zu den beliebtesten Lösungen im Bereich der Container-Virtualisierung. Die Software wird zwar nach wie vor weltweit intensiv, sowohl On-Premises als auch cloudbasiert eingesetzt, hat aber in den letzten Jahren an Bedeutung verloren. Das ist nicht zuletzt darauf zurückzuführen, dass es mittlerweile zahlreiche Alternativen gibt und die Container-Orchestrierungslösung Kubernetes seit 2022 die Docker-Engine nicht mehr nativ unterstützt.

Als offizielles Registry für Docker-Images und Repositories fungiert der Onlinedienst Docker Hub. Auf Docker Hub können Container-Images als vorgefertigte Lösungen veröffentlicht und geteilt werden. Der Hub lässt sich sowohl als öffentliches als auch als privates Registry nutzen.

Was unterscheidet die Container-Virtualisierung von virtuellen Maschinen?

Im Computerumfeld existieren unterschiedliche Virtualisierungskonzepte. Die beiden bekanntesten und am häufigsten genutzten sind die Container-Virtualisierung und virtuelle Maschinen (VMs). Bei einer VM wird ein kompletter Rechner inklusive seines Betriebssystems virtualisiert. Die Schnittstelle zwischen VM und der Hardware beziehungsweise dem Betriebssystem des Host-Rechners bildet ein sogenannter Hypervisor.

Die Container-Virtualisierung hingegen setzt auf dem Betriebssystem des Host-Rechners auf. Sie virtualisiert lediglich die Anwendung mit der zur Ausführung benötigten Laufzeitumgebung, dem Programmcode, den Systembibliotheken und Systemwerkzeugen.

Der Zugriff der virtualisierten Umgebung auf das Host-Betriebssystem und die Ressourcen des Host-Rechners ist über eine Container-Engine realisiert. Im Gegensatz zu VMs sind Container wesentlich schlanker. Sie belegen weniger Ressourcen (Computing, Storage, Arbeitsspeicher) des Host-Systems und lassen sich, da kein virtuelles Betriebssystem gebootet werden muss, schneller starten.

Was sind die wichtigsten Komponenten einer Docker-basierten Container-Umgebung?

Die Docker-Engine ist eine zentrale Komponente einer Container-Umgebung. Sie ist quasi die Schnittstelle zwischen dem Betriebssystem des Host-Systems und den einzelnen virtualisierten Containern. Um Container auf einem Host-Rechner betreiben und ausführen zu können, muss die Engine installiert sein. Sie weist den Containern die benötigten Ressourcen zu. Innerhalb des Linux-Kernels des Host-Systems werden Kernel-Funktionen wie namespaces und cgroups zur Isolation und Verwaltung der Prozesse und Ressourcen genutzt. Weitere Komponenten im Umfeld der Engine sind die Docker Engine REST API und das Docker CLI (Command Line Interface).

Das schreibgeschützte Speicherabbild eines Containers wird als Image bezeichnet. Es enthält die Anwendung und die zur Ausführung benötigten Komponenten und lässt sich wie eine Datei kopieren, speichern oder auf andere Systeme mit einer Docker-Engine übertragen. Images können aus mehreren Layern bestehen. Jeder Layer beschreibt den Unterschied zum vorherigen Layer. So wird sichtbar, welche Elemente einem Image hinzugefügt oder entfernt wurden. Aus einem Image lassen sich beliebig viele Container starten. Ein Container ist quasi eine aktive Live-Instanz eines Images. Sie enthält die ausführbaren Live-Inhalte und erlaubt die Interaktion mit Benutzern.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Wofür lässt sich Docker einsetzen?

Die Container-Virtualisierung bietet zahlreiche Einsatzmöglichkeiten. Mit ihr lassen sich:

  • Anwendungen bereitstellen und ausführen
  • Anwendungen entwickeln
  • Anwendungen migrieren oder portieren
  • DevOps-Prozesse umsetzen
  • kontinuierliche Integrations- und Bereitstellungsprozesse realisieren
  • Umgebungen für cloudnative, Microservice-basierte Anwendungen realisieren
  • parallele Anwendungen auf einem Host-System isolieren
  • Anwendungsumgebungen und Datenverarbeitungssysteme skalieren
  • Testumgebungen realisieren und Anwendungen testen

Was sind die Vor- und Nachteile der Container-Virtualisierung mit Docker?

Die Container-Virtualisierung benötigt weniger Ressourcen als virtuelle Maschinen. Container sind sehr schlank, schnell zu starten und sind als Dateien auf andere Systeme übertragbar. Sie lassen sich ausführen, ohne dass eine Installation der Anwendung und ihrer Anwendungsumgebung erforderlich ist. Die Bereitstellungszeiten verkürzen sich deutlich. Auf einem einzigen Host-System können sehr viele Container ausgeführt werden. Container sind sowohl für On-Premises- als auch für Cloud-Umgebungen geeignet. Die in verschiedenen Containern ausgeführten Anwendungen sind durch die Docker-Engine untereinander abgeschottet. Die Layer-Struktur der Images ermöglicht eine Versions- und Änderungskontrolle sowie Rollbacks auf vorherige Versionen. Docker ist eine frei verfügbare Open-Source-Software und auf Rechnern mit unterschiedlichen Betriebssystemen einsetzbar.

Als Nachteile des Konzepts der Container-Virtualisierung und der Nutzung von Docker lassen sich aufführen:

  • die Virtualisierungstiefe im Vergleich zu virtuellen Maschinen ist geringer
  • die Container eines Host-Rechners greifen alle auf ein gemeinsames Betriebssystem zu
  • Fehler oder Sicherheitslücken des Betriebssystems oder der Container-Engine wirken sich gegebenenfalls auf alle Docker-Container aus
  • komplexe Container-Umgebungen erfordern eine Orchestrierungslösung
  • es kann eine gewisse Abhängigkeit von der Docker-Software entstehen
  • keine native Unterstützung mehr durch die Orchestrierungslösung Kubernetes
  • in vielen Bereichen kommen mittlerweile Alternativen zu Docker zum Einsatz

(ID:49910692)