Definition

Docker Engine

Was ist Docker Engine?

Die Docker Engine ist die zugrunde liegende Client-Server-Technologie, die die Aufgaben und Arbeitsabläufe bei der Erstellung, Auslieferung und Ausführung von containerisierten Anwendungen unter Verwendung der Komponenten und Dienste von Docker unterstützt.

Der Begriff Docker allein kann sich entweder auf die Docker Engine oder auf das Unternehmen Docker Inc. beziehen, das verschiedene Editionen der Containerisierungstechnologie rund um die Docker Engine anbietet.

Komponenten der Docker Engine

Docker Engine ist eine Open-Source-Technologie, die einen Server mit einem Daemon-Prozess namens dockerd, eine REST-API und eine clientseitige Befehlszeilenschnittstelle (CLI) namens docker umfasst. Die Engine erstellt einen serverseitigen Daemon-Prozess, der Bilder, Container, Netzwerke und Speicher-Volumes hostet. Mit der CLI können Benutzer über die API mit dem Docker-Daemon interagieren.

Die Docker Engine ist deklarativ, das heißt die Administratoren programmieren eine bestimmte Reihe von Bedingungen als gewünschten Zustand. Die Engine passt dann automatisch die tatsächlichen Einstellungen und Bedingungen an, um sicherzustellen, dass sie jederzeit mit dem gewünschten Zustand übereinstimmen.

Docker Engine vs. Docker Machine

Docker Engine wurde ursprünglich für Linux-Systeme entwickelt und ist inzwischen so erweitert worden, dass sie nativ unter Windows und macOS funktioniert. Docker Machine ist ein Tool zur Installation und Verwaltung der Docker Engine auf verschiedenen virtuellen Hosts oder älteren Versionen von macOS und Windows. Wenn Docker Machine auf dem lokalen System installiert ist, werden durch die Ausführung eines Befehls über Docker Machine nicht nur virtuelle Hosts erstellt, sondern auch Docker installiert und seine Clients konfiguriert.

Ab 2021 pflegt Docker Inc. Docker Machine nicht mehr aktiv und empfiehlt die Anwendung Docker Desktop für die Entwicklung von Containern für macOS und Windows.

Docker Engine und Swarm-Modus

Ein Swarm ist ein Cluster verbundener Docker Engines, auf denen Administratoren Anwendungsdienste bereitstellen können. In Version 1.12 hat Docker Docker Swarm direkt in Docker Engine integriert und den Orchestrierungsdienst in Swarm-Modus umbenannt. Der Swarm-Modus ist der systemeigene Clustering- und Orchestrierungsdienst von Docker Engine, obwohl Docker Engine auch andere Optionen wie Kubernetes ausführen kann.

Mit Docker Engine können Administratoren sowohl Manager- als auch Worker-Knoten (Nodes) von einem einzigen Festplatten-Image zur Laufzeit instanziieren, anstatt sie bereitzustellen. Da Docker Engine auf einem deklarativen Modellläuft, bleibt der Swarm-Modus erhalten und kehrt im Falle eines Ausfalls oder eines Skalierungsereignisses in den deklarierten Sollzustand zurück.

Abbildung 1: Docker Engine spielt eine entscheidende Rolle im Technologie-Stack, der containerisierte Anwendungen unterstützt.
Abbildung 1: Docker Engine spielt eine entscheidende Rolle im Technologie-Stack, der containerisierte Anwendungen unterstützt.

Docker-Engine-Plugi-ns und Speicher-Volumes

Docker Engine kann eine Reihe von Plug-ins verwenden, die als Images in einer privaten Registry oder einem öffentlichen Repository wie GitHub oder Docker Hub gehostet werden. Admins können den gesamten Lebenszyklus eines Plug-ins mit Docker Engine verwalten, von der Installation bis zur Löschung.

Plug-ins erstellen Elemente wie Daten-Volumes, das heißt Verzeichnisse, die in einem Container vorhanden sind. Es gibt drei Arten von Volumes:

  • Host-Volumes im Dateisystem.
  • Named Volumes werden von Docker auf der Festplatte verwaltet, auf der das Volume erstellt und benannt wurde.
  • Anonyme Volumes ähneln Named Volumes, sind aber nicht mit einer bestimmten Quelle außerhalb des Containers verbunden, was ihre Referenzierung erschwert.

Docker Engine erstellt ein Daten-Volume gleichzeitig mit einem Container-Image und kann Daten enthalten, die von einem übergeordneten Image kopiert wurden. Container können Volumes gemeinsam nutzen und wiederverwenden, und Volumes werden nicht gelöscht, wenn ein Container gelöscht wird. Da Docker Engine entfremdete Daten-Volumes nicht löscht oder sammelt, sind die Benutzer für ihre Daten-Volumes verantwortlich.

Vernetzung in Docker Engine

Docker Engine stellt Standardnetzwerktreiber zur Verfügung, mit denen Benutzer eindeutige Brückennetzwerke erstellen können, die die Container-Kommunikation steuern. Docker Inc. empfiehlt, dass Benutzer aus Sicherheitsgründen ihre eigenen Brückennetzwerke definieren.

Container können sich mit mehreren oder keinen Netzwerken verbinden und können sich mit Netzwerken verbinden und von ihnen trennen, ohne den Containerbetrieb zu unterbrechen. Docker Engine umfasst drei Netzwerkmodelle:

  • Bridge (Brücke) fügt Container zum Standardnetzwerk docker0 hinzu.
  • None fügt Container zu einem Container-spezifischen Netzwerkstack hinzu, gibt den Containern aber keinen externen Netzwerkzugang.
  • Host fügt Container zum Netzwerk-Stack des Hosts hinzu, wobei keine Isolierung zwischen dem Host-Rechner und den Containern besteht.

Benutzer können auch Netzwerktreiber-Plug-ins erstellen, wenn die drei Standard-Netzwerktypen von Docker ihren Anforderungen nicht genügen. Für diese Plug-ins gelten die gleichen Einschränkungen und Regeln wie für andere Plug-ins, und sie verwenden die Plug-in-API.

Docker-Engine-Netzwerke und der Swarm-Modus können zusammenarbeiten, um Overlay-Netzwerke auf Managerknoten ohne einen externen Key-Value-Store zu erstellen, was für Cluster notwendig ist, die nicht vom Swarm-Modus verwaltet werden. Dieses Overlay-Netzwerk steht nur den Arbeitsknoten zur Verfügung, die es für einen Dienst benötigen, und erstreckt sich automatisch auf alle neuen Knoten, auf denen der Dienst ausgeführt wird. Das Erstellen von Overlay-Netzwerken ohne Verwendung des Swarm-Modus erfordert einen gültigen Key-Value-Store-Dienst und wird für die meisten Benutzer nicht empfohlen.

Diese Definition wurde zuletzt im Februar 2024 aktualisiert

Erfahren Sie mehr über Storage und Virtualisierung