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-Logo

Digitales Produktionsmanagement in der Cloud

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 für eine gezielte Überwachung, Steuerung und Automatisierung von Produktionsprozessen.

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-Logo

Digitales Produktionsmanagement in der Cloud

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 für eine gezielte Überwachung, Steuerung und Automatisierung von Produktionsprozessen.

Lernen Sie manubes kennen!

manubes bringt das industrielle Produktionsmanagement in die Cloud: Unsere innovative Plattform bietet spezialisierte Werkzeuge zur Anbindung von Produktionssystemen, Verwaltung und Visualisierung von Produktionsdaten sowie zur Automatisierung von Produktionsprozessen. manubes-Nutzer profitieren von einer leistungsfähigen Infrastruktur, weltweitem Zugriff und maximaler Sicherheit.