Erklärung, Vorteile & Anwendungen

Was ist Docker?

Mit Docker können Softwareanwendungen in isolierten Containern entwickelt, ausgeführt und verteilt werden. In diesem Beitrag erklären wir, wie Docker funktioniert und warum die Open-Source-Softwareplattform zu einem wichtigen Tool für viele Entwickler geworden ist. 

Definition

Was ist Docker?

Docker ist eine Open-Source Software zur Container-Virtualisierung von Anwendungen, die erstmals 2013 veröffentlicht wurde.

Mit Docker können Softwareanwendungen in isolierten Containern entwickelt, bereitgestellt und ausgeführt werden.

Der Vorteil dabei ist, dass sich diese containerisierten Programme leicht teilen und auf unterschiedlichen Betriebssystemen einheitlich testen, installieren und ausführen lassen.

Aus diesem Grund ist Docker schnell zu einem wichtigen Tool für viele Softwareentwickler geworden. Viele bekannte Anwendungen und Plattformen wie z.B. WordPress, GitLab und MongoDB unterstützen oder nutzen die Docker-Technologie.

Docker-Logo

Das offizielle Docker-Logo

Funktionsweise

Wie funktioniert Docker?

Docker kann auf verschiedene Arten verwendet werden.

Die Docker Engine für Linux, auch als Docker Community Edition (Docker CE) bezeichnet, kann für verschiedene Linux-Distributionen installiert werden und erlaubt die Ausführung von Docker-Containern. Entsprechende Anleitungen sind in der Docker-Dokumentation zu finden.

Docker Desktop dagegen ist ein Programm mit einer grafischen Benutzeroberfläche, das auf Windows-, Linux- und Mac-Systemen heruntergeladen und installiert werden kann. Hier können Nutzer ihre eigenen Container erstellen, ausführen und verwalten.

Docker Desktop kann auf der offiziellen Docker-Website heruntergeladen werden. Dort stehen Downloads für Windows, Linux und Mac zur Verfügung.

Docker Hub ist eine Online-Plattform zum Veröffentlichen und Teilen von Docker Images (siehe „Was ist ein Docker Image?“) und Repositories. Über Docker Hub können Docker Images sowohl öffentlich als auch privat oder firmenintern geteilt werden.

Im Folgenden erklären wir die wichtigsten Begriffe im Zusammenhang mit Docker.

In der Praxis kann die Docker-Technologie beispielsweise verwendet werden, um Software auf kleineren (Linux-basierten) Geräten zu installieren und auszuführen, darunter IoT- und Edge-Geräte in der industriellen Automatisierung. Mehr dazu erfahren Sie im Abschnitt „Wo wird Docker eingesetzt?“.

Was ist ein Docker-Container?

Ein Docker-Container ist eine isolierte Umgebung für Code. Der Container verfügt über ein eigenes (isoliertes) Dateisystem und ermöglicht dadurch die Ausführung von Code bzw. Software.

Docker-Container können untereinander kommunizieren und dadurch einzelne Container gezielt miteinander verknüpft werden. Dies ermöglicht die Ausführung sogenannter „Microservices“ (Dienste) in mehreren, oft sehr vielen Containern, die zusammen eine vollständige Anwendung bilden.

Docker-Container teilen sich die Ressourcen des Host-Rechners, auf dem sie laufen und setzen einen Linux-Kernel voraus. Mithilfe bestimmter Virtualisierungssoftware bzw. Docker Desktop können sie aber auch auf Windows und Mac betrieben werden.

Was ist ein Docker Image?

Ein Docker Image ist das Abbild eines Docker-Containers. Es enthält den Code für den Docker-Container und seine Abhängigkeiten und kann benutzt werden, um eine oder mehrere Instanzen des Containers zu starten. Docker Images lassen sich leicht teilen.

Beispiel: Entwicklerin A verwendet Docker Desktop, um eine Anwendung in einem Docker-Container zu erstellen. Sie speichert ein Image des Containers und stellt es online zur Verfügung. Entwickler B lädt das Docker Image herunter und führt es aus, um einen Container mit der von A erstellten Anwendung zu starten.

Ein Docker-Image besteht aus mehreren layers (deutsch: Schichten). Bei jeder Änderung wird eine neue Schicht erzeugt (siehe „Versionsverwaltung mit Docker“).

Was ist ein Dockerfile?

Ein Dockerfile definiert die Schritte zur Erzeugung eines Docker Images. Dabei handelt es sich um eine Textdatei mit Anweisungen, die bei der Ausführung des Dockerfiles nacheinander angewandt werden und dem Docker Image neue Schichten hinzufügen. Die Erzeugung eines Docker Images aus einem Dockerfile wird als Build-Prozess bezeichnet.

Versionsverwaltung mit Docker

Ein Docker Image besteht aus mehreren Schichten (layers). Bei jeder Änderung des Images wird eine neue Schicht erzeugt, der die Änderungen anzeigt. Diese Layer sind schreibgeschützt und können nicht manipuliert werden.

Anhand der Schichten können die Unterschiede zwischen zwei Versionen eines Images sowie die Historie eines Images nachvollzogen werden.

manubes

Cloudbasiertes Produktionsmanagement

Unsere Cloud-Plattform manubes nutzt die Docker-Technologie, um Produktionsdaten in lokalen Netzwerken mithilfe von Edge Nodes zu verarbeiten und sicher in die Cloud zu transferieren.

Mit innovativen No-Code-Designtools bietet manubes umfangreiche Möglichkeiten zur Entwicklung eigener Lösungen in den Bereichen Produktionsüberwachung, Produktionssteuerung und Prozessautomatisierung.

Vorteile

Was sind die Vorteile von Docker?

Die Container-Virtualisierung mit Docker bietet verschiedene Vorteile gegenüber anderen Entwicklungs- und Bereitstellungsumgebungen:

Portabilität und Konsistenz:
Docker-Container sind nicht nur portabel, sondern auch konsistent über verschiedene Umgebungen hinweg. Entwickler können Container lokal erstellen, testen und sie dann in unterschiedlichen Produktionsumgebungen bereitstellen, ohne sich um Inkompatibilitäten oder Konfigurationsunterschiede sorgen zu müssen. Dies trägt zur Schaffung einer einheitlichen Entwicklungs-, Test- und Produktionsumgebung bei.

Effiziente Ressourcennutzung:
Docker optimiert die Ressourcennutzung durch die gemeinsame Nutzung des Betriebssystems-Kernels. Im Gegensatz zu Virtualisierungstechnologien, die separate Betriebssysteminstanzen für jede virtuelle Maschine erfordern, teilen sich Docker-Container den Kernel des Host-Betriebssystems.

Schnelle Bereitstellung:
Docker ermöglicht eine schnelle Bereitstellung von Anwendungen. Docker-Container können innerhalb von Sekunden aus einem Docker-Image gestartet werden.

Skalierbarkeit:
Docker erleichtert die horizontale Skalierung von Anwendungen, da bei höherer Auslastung einfach weitere Container hinzugefügt werden können.

Unterstützung für Microservice-Architekturen:
Docker bietet die Möglichkeit, Teile einer Anwendung, sogenannte Microservices, getrennt voneinander auszuführen. Durch das mehrfache Vorhandensein gleicher Dienste (Redundanz) kann eine Ausfallsicherheit gewährleistet werden. Die Skalierbarkeit der Architektur kann durch das flexible Hinzufügen oder Entfernen von Containern erreicht werden. Außerdem sind ein gezieltes Monitoring, Aktualisierungen und Reparaturen möglich.

Einsatzgebiete

Wo wird Docker eingesetzt?

Zu den wichtigsten Einsatzgebieten für die Docker-Technolgie zählen DevOps-Umgebungen, Cloud Computing und Edge Computing.

Verwendung im DevOps-Bereich

Unter dem Begriff DevOps werden verschiedene Methoden, Werkzeuge und Herangehensweisen zusammengefasst, die eine enge Zusammenarbeit zwischen Softwareentwicklung (Development) und IT-Betrieb (Operations) ermöglichen. Ziel ist es, den Entwicklungsprozess effizienter zu gestalten und die Qualität von Anwendungen zu gewährleisten.

Docker ist aus verschiedenen Gründen für DevOps relevant: Durch die Portabilität der Docker-Container können Anwendungen in verschiedenen Umgebungen getestet, ausgeführt und dadurch schnell bereitgestellt werden. Fehler, die aufgrund von Umgebungsunterschieden entstehen, werden mit Docker minimiert.

Auch die Ausfallsicherheit und Skalierbarkeit von Docker-basierten Microservice-Architekturen begünstigen einen effizienten IT-Betrieb.

Verwendung in Cloud-Umgebungen

Große Cloud-Umgebungen wie z.B. Amazon Web Services, Microsoft Azure oder IBM Cloud bieten Unterstützung für Docker. Dadurch können Nutzer der Cloud-Infrastruktur ihre containerisierten Anwendungen in der Cloud ausführen und je nach Plattform mit erweiterten Tools verwalten.

Verwendung im Edge Computing

Docker-Container können auf (Linux-basierten) Edge-Geräten und in verteilten Netzwerken eingesetzt werden, um Anwendungen und Dienste nahe an den Datenquellen oder Endbenutzern auszuführen.

Dabei ermöglicht die Containerisierung mit Docker eine Entkopplung zwischen der Entwicklungs- und Zielumgebung von Anwendungen. Programme können mit Docker nicht nur einheitlich auf verschiedenen Geräten ausgerollt werden, auch die Versionskontrolle und Wartung werden erleichtert. Für Anwendungsfälle, in denen eine große Zahl an Containern installiert, verwaltet, aktualisiert und überwacht werden sollen, wurden spezielle Lösungen entwickelt, darunter z.B. Portainer.

Auch unsere Cloud-Plattform manubes nutzt Docker-Container, um Edge Nodes auf verschiedensten Zielsystemen auszuführen. Diese ermöglichen es, industrielle Daten lokal zu verarbeiten und sicher in die manubes-Cloudumgebung zu übermitteln.

manubes

Cloudbasiertes Produktionsmanagement

Unsere Cloud-Plattform manubes nutzt die Docker-Technologie, um Produktionsdaten in lokalen Netzwerken mithilfe von Edge Nodes zu verarbeiten und sicher in die Cloud zu transferieren.

Mit innovativen No-Code-Designtools bietet manubes umfangreiche Möglichkeiten zur Entwicklung eigener Lösungen in den Bereichen Produktionsüberwachung, Produktionssteuerung und Prozessautomatisierung.

FAQ

Weitere häufig gestellte Fragen zu Docker

Wie unterscheidet sich Docker von einer virtuellen Maschine (VM)?

Sowohl Docker als auch virtuelle Maschinen sind Technologien zur Virtualisierung von Ressourcen. Sie nutzen die realen Ressourcen (CPU, Arbeitsspeicher etc.) des Hostsystems, um eine virtuelle Umgebung zum Betrieb von Softwareanwendungen zu schaffen.

Ein Docker-Container enthält den Anwendungscode und alle benötigten Konfigurationen und Abhängigkeiten, um diesen auszuführen. Allerdings nutzt ein Docker-Container dazu direkt den Kernel des Hostsystems. Ein Docker-Container enthält bzw. startet kein eigenes Betriebssystem.

Virtuelle Maschinen dagegen bieten ein komplettes, isoliertes Computersystem, einschließlich der Hardware/Kernel-Schicht. Sie enthalten ein eigenes (Gast-)Betriebssystem, während Docker-Container das Betriebssystem des Hosts nutzen.

Docker-Container sind leichtgewichtiger als virtuelle Maschinen, können schneller gestartet und gestoppt werden und bieten eine Portabilität über verschiedene Linux-Plattformen hinweg (mit Docker Desktop auch für Windows und Mac).

Virtuelle Maschinen bieten eine stärkere Isolierung und werden u.a. eingesetzt, um spezielle Anforderungen an Hardware und Betriebssystem zu erfüllen, da sie ein eigenes Betriebssystem bereitstellen.

Wie installiere ich Docker auf meinem System?

Zur Verwendung von Docker-Containern wird die Docker Engine benötigt. Diese kann direkt auf verschiedenen Linux-Distributionen installiert werden.

Alternativ kann Docker Desktop auf Linux-, Windows- oder Mac-Systemen installiert werden. Docker Desktop beinhaltet nicht nur die Docker Engine, sondern bietet auch eine grafische Benutzeroberfläche zur Verwaltung von Containern.

Was ist der Unterschied zwischen einem Docker Image und einem Docker-Container?

Ein Docker Image ist eine schreibgeschützte Vorlage, die Anwendungscode, Abhängigkeiten und Konfigurationen enthält. Das Docker Image wird verwendet, um eine oder mehrere Instanzen eines Docker-Containers zu starten, der auf dem Docker Image basiert.

Ein Docker-Container ist eine laufende (oder gestoppte) Instanz eines Docker Images. Der Container hat einen eigenen Zustand, darunter Änderungen am Dateisystem, laufende Prozesse und temporäre Dateien. Dieser hat jedoch keinen Einfluss auf das zugrundeliegende Docker Image.

Was ist Docker Hub und wofür wird es benötigt?

Docker Hub ist eine Internet-Plattform zum Speichern, Verwalten und Teilen von Docker Images – sowohl privat/unternehmensintern als auch öffentlich.

Die Plattform bietet mehr als 10 Millionen Docker Images in verschiedenen Kategorien.

Wie starte, stoppe und entferne ich einen Docker-Container?

Docker-Container können über die Eingabe von Befehlen in der Kommandozeile gestartet und gestoppt werden.

Der Befehl docker run startet einen Docker Container aus einem Docker Image. Dabei können verschiedene „Options“ und „Commands“ angegeben werden.

Options beeinflussen die Eigenschaften des Containers (z.B. Ressourcenlimits und IP-/MAC-Adresse). Commands sind Befehle, die nach dem Starten innerhalb des Containers ausgeführt werden.

Im abgebildeten Beispiel wird ein Docker-Container mit dem Namen „test“ aus dem Docker Image „mein-image“ erzeugt:

docker run --name test mein-image

Der Befehl docker start startet einen oder mehrere gestoppte Docker-Container.

docker start test

Der Befehl docker stop stoppt einen oder mehrere Docker-Container.

docker stop test

Der Befehl docker rm entfernt einen gestoppten Docker-Container.

docker rm test

Wie installiere und starte ich die manubes Edge Node mit Docker?

Unsere Cloud-Plattform manubes nutzt Edge-Komponenten, um den sicheren & bidirektionalen Datenaustausch mit Maschinen, Geräten und Softwaresystemen an verschiedenen Standorten zu ermöglichen.

Edge Nodes werden innerhalb eines Docker-Containers auf lokalen Geräten betrieben, wo sie Kapazitäten zur Datenverarbeitung bereitstellen und sicheren Zugriff auf lokale Systeme ermöglichen.

Nach dem Hinzufügen einer Edge Node in manubes können Nutzer den Befehl zum Starten des Docker-Containers abrufen. Das Docker Image wird beim Ausführen des Befehls automatisch abgerufen.

manubes Edge Node: Installationsanleitung für Docker

Alternativ ist eine Installation über die Container-Management-Lösung Portainer möglich.

Auf Windows-Systemen können manubes Edge Nodes auch mit der Option „Windows Service“ heruntergeladen und installiert werden.

Testen Sie manubes –
Kostenlos und unverbindlich

Testen Sie sämtliche manubes-Features in Ihrer persönlichen Cloud-Umgebung.