Definition Was ist Docker?
Docker ist eine unter Apache 2.0 Lizenz stehende, frei verfügbare Software zur Containervirtualisierung. Mithilfe der Docker-Engine lassen sich Anwendungen inklusive ihrer Anwendungsumgebung parallel und untereinander isoliert auf einem Host-System bereitstellen. Die Software ist für Betriebssysteme wie Linux, Windows und macOS verfügbar. Im Gegensatz zu virtuellen Maschinen benötigen Docker-Container keine Virtualisierung des Betriebssystems.
Anbieter zum Thema

Docker ist der Name einer Software zur Containervirtualisierung. Sie wird vom gleichnamigen US-amerikanischen Unternehmen Docker, Inc. unter Apache-2.0-Lizenz als Open-Source-Software angeboten. Darüber hinaus stellt Docker, Inc. zahlreiche kommerzielle Softwareprodukte rund um die Docker-Software zur Verfügung.
Docker hat sich im Bereich der Containervirtualisierung weltweit etabliert und ist eine der beliebtesten Lösungen in diesem Umfeld. Mit Docker lassen sich Anwendungen samt ihrer Anwendungsumgebung virtualisiert und untereinander isoliert auf einem gemeinsam genutzten Betriebssystem des Host-Rechners bereitstellen. In einem Container sind alle zur Ausführung der Anwendung benötigten Ressourcen wie Programmcode, Bibliotheken, Laufzeitumgebungen und System-Tools vorhanden. Container lassen sich Image-basiert als Dateien speichern und durch einfaches Kopieren auf andere Rechner übertragen. Als Schnittstelle zwischen der containerisierten Anwendung und dem Host-Betriebssystem agiert die Docker-Engine. Sie weist den Containern die Betriebssystemressourcen zu und sorgt für die Isolierung der Container untereinander.
Container-Umgebungen können auf lokalen Rechnern on-premises betrieben oder über private und öffentliche Clouds bereitgestellt werden. Zur Orchestrierung von Container-Umgebungen kommen Lösungen wie Kubernetes zum Einsatz. Die 2013 veröffentlichte Docker-Software unterstützt mittlerweile verschiedene Betriebssysteme wie Linux, Windows und macOS. Heruntergeladen werden kann die Software über die Docker-Homepage.
Abgrenzung zwischen dem Konzept der Containervirtualisierung und virtueller Maschinen
Im IT-Bereich existieren verschiedene Konzepte der Virtualisierung wie virtuelle Maschinen oder die Containervirtualisierung. Virtuelle Maschinen (VMs) und Container lassen sich klar voneinander abgrenzen. Bei einer virtuellen Maschine handelt es sich um einen samt Betriebssystem virtualisierten Rechner. Als Schnittstelle zwischen Hardware und den virtualisierten Betriebssystemen agiert ein Hypervisor.
Container hingegen nutzen alle das gleiche Betriebssystem des zugrundeliegenden Host-Rechners. Lediglich die Laufzeitumgebungen mit den Programmbibliotheken und Konfigurationen sowie den Anwendungen inklusive ihrer Daten sind virtualisiert. Die Container-Engine ermöglicht den Zugriff auf das Host-Betriebssystems. Container sind wesentlich schlanker und benötigen weniger Host-Ressourcen wie Rechenleistung, RAM und Speicherplatz als eine virtuelle Maschinen. Ein Container ist schneller als eine virtuelle Maschine gestartet, da kein komplettes Betriebssystem hochgefahren werden muss.
Funktionsweise von Docker
Die wichtigste Komponente einer Docker-Container-Umgebung ist die Docker-Engine. Sie agiert als Schnittstellen zwischen den Containern eines Host-Systems und dessen Betriebssystem und weist die benötigten Ressourcen zu. Das Speicherabbild eines Containers mit Anwendung und Laufzeitumgebung wird als Image bezeichnet. Ein Image lässt sich wie eine Datei behandeln und durch einfaches Kopieren auf anderen Systeme mit Docker-Engine übertragen. Aus einem einzigen Image lassen sich beliebig viele Container starten. Images können über Repositories bereitgestellt und mit anderen geteilt werden.
Einsatzmöglichkeiten von Docker
Den Einsatzmöglichkeiten der Containervirtualisierung mit Docker sind kaum Grenzen gesetzt. Typische Einsatzbereiche von Docker sind:
- Bereitstellung von Microservice-basierten, Cloud-nativen Anwendungen
- standardisierte, kontinuierliche Integrations- und Bereitstellungsprozesse für Anwendungen
- Isolation mehrerer paralleler Anwendungen auf einem Host-System
- Anwendungsentwicklung
- Anwendungsmigration und -portierung
- skalieren von Anwendungsumgebungen
Die Vor- und Nachteile der Containervirtualisierung mit Docker
Das Konzept der Containervirtualisierung und der Einsatz von Docker als Container-Engine-Software bietet zahlreich Vorteile. Container benötigen weniger Ressourcen eines Host-Systems und lassen sich schneller starten als virtuelle Maschinen. Die Docker-Software sorgt für eine zuverlässige Abschottung der Container und ihrer Laufzeitumgebungen auf den Host-Systemen. Docker-Container sind sehr schlank. Auf einem Host-Rechner sind sehr viele Container lauffähig. Docker eignet sich sowohl für On-Premises- als auch für Cloud-Umgebungen.
Die Software ist hoch skalierbar und lässt sich mit Orchestrierungslösungen managen. Große, verteilte Container-Setups sind realisierbar. Als Images lassen sich Container schnell und einfach auf anderen Systeme mit Docker-Engine übertragen. Es müssen keine Laufzeitumgebungen zur Ausführung der Anwendungen installiert werden. Entwicklungs-, Integrations- und Bereitstellungsprozesse werden mit Docker vereinfacht und lassen sich standardisieren. Die Containerisierung mit Docker stellt die Basis für moderne Cloud-native Microservice-Anwendungen bereit. Container beschleunigen die Entwicklung neuer Anwendungen und verkürzen die Bereitstellungszeiten. Durch das Layer-Konzept der Images ist eine einfach Versions- und Änderungskontrolle der Container möglich. Container können dank der Layer problemlos auf eine vorherige Version zurückgesetzt werden, um beispielsweise einen Anwendungs-Rollback zu realisieren.
Neben diesen Vorteilen bringt die Containervirtualisierung mit Docker auch einige Nachteile mit sich. Die Container eines Hostsystems müssen alle auf das gleiche Betriebssystem zugreifen. Es entsteht eine zusätzliche Abhängigkeit zur Docker-Software. Die Virtualisierungstiefe ist im Vergleich zu einer VM wesentlich geringer. Fehler oder Sicherheitsschwachstellen des Betriebssystems oder der Container-Engine wirken sich unter Umständen auf alle Container aus. Die Lösung eines Kompatibilitätsproblems zwischen einem Container und dem Betriebssystem kann Einfluss auf die weiteren Container des Systems haben.
(ID:47067546)