Docker: Image vs. Container – die Unterschiede erklärt

Docker-Images und -Container sorgen jeweils dafür, dass Anwendungen in isolierten Umgebungen ausgeführt werden können und dass diese Umgebungen überhaupt gestartet werden können. Somit sind sie zwei der wichtigsten Bestandteile der Docker-Virtualisierungsplattform und des Docker-Ökosystems. Wir erklären die beiden Begriffe und gehen anschließend auf ihre Gemeinsamkeiten und Unterschiede ein.

IONOS Cloud Compute Engine

Mittelständische und große Unternehmen wählen die Cloud Made in Germany. IaaS und PaaS vom Hidden Champion für Hidden Champions.

Sicher
Zuverlässig
Flexibel

Docker-Container

Docker-Container sind isolierte Ausführungseinheiten für Anwendungen und ihre Abhängigkeiten. In diesem Punkt sind sie sehr ähnlich zu virtuellen Maschinen, allerdings gibt es einige wichtige Unterschiede. Der Hauptunterschied ist, dass der Isolationsgrad bei Containern etwas geringer ist als bei VMs, da kein zusätzliches Betriebssystem virtualisiert werden muss. Stattdessen teilen sich die Container das Betriebssystem und den Kern des Host-Systems. Dies bietet einige Vorteile, die die Entwicklung von Anwendungen erleichtern und beschleunigen, aber auch ein paar Nachteile.

Der Ressourcenverbrauch ist bei Containern viel geringer als bei VMs. Somit weisen sie eine bessere Performance auf als VMs und können schneller gestartet werden. Außerdem sind sie viel portabler als VMs, da nur die auszuführende Anwendung und ihre Abhängigkeiten transportiert werden müssen. Der geringe Overhead von Docker-Containern bietet den weiteren Vorteil, dass mehrere Container gleichzeitig auf demselben System ausgeführt werden können.

Ein Nachteil dieses geringeren Isolationsgrades ist, dass Container eine schlechtere Sicherheit aufweisen als VMs. Da alle Container Zugang zum Betriebssystemkern haben, könnte ein „infizierter“ Container ernstzunehmenden Schaden verursachen. Bei Anwendungen, die einen höheren Sicherheitsgrad benötigen, sollte daher auf eine VM zurückgegriffen werden.

Tipp

Da Docker-Container alle benötigten Abhängigkeiten beinhalten, können Sie den Betrieb von Webanwendungen für Sie und die Endnutzerinnen und Endnutzer massiv erleichtern. Der Cloud Server von IONOS kann sogar so konfiguriert werden, dass Docker schon vorinstalliert ist.

Docker-Images

Ein Docker-Image ist eine schreibgeschützte Vorlage, die von der Docker-Engine benutzt wird, um einen Container zu erzeugen. Somit können Docker-Container als laufende Instanzen von Docker-Images verstanden werden. Diese Vorlage enthält die Abhängigkeiten der auszuführenden Anwendung, die benötigte Laufzeitumgebung sowie den Anwendungscode selbst. Als Vorlage für Container dienen Images dazu, konsistente, reproduzierbare Ausführungsumgebungen für Anwendungen zu erzeugen.

Docker-Images selbst werden als Binärdateien gespeichert, aber können auch in menschenlesbarer Form gespeichert werden. Diese textbasierten Dateien heißen Dockerfiles und beinhalten alle Anweisungen, die benötigt werden, um das Image wiederherzustellen. Sowohl Docker-Images als auch Dockerfiles sind portabel und können somit sehr leicht von System zu System transportiert werden. Somit können Docker-Images in Docker-Registry-Repositorys wie Docker Hub gespeichert und von dort heruntergeladen werden. Laufende Container-Instanzen können auch mittels des Befehls docker commit als Image-Dateien gespeichert werden.

Tipp

Bei der Entwicklung von Anwendungen ist es wichtig, seinen Arbeitsplatz in Ordnung zu halten. Wenn Sie schon länger mit vielen unterschiedlichen Containern und Images arbeiten, haben Sie mit Sicherheit einige davon auf Ihrem Rechner, die Sie nicht mehr benötigen. Unsere Artikel zeigen Ihnen, wie Sie überflüssige Docker-Container löschen und Docker-Images entfernen können.

Docker-Image vs. -Container: Was ist der Unterschied?

Docker-Images und -Container sind im Grunde genommen das Gleiche, nur in anderen Formen. Ein Image ist eine schreibgeschützte Vorlage für einen Container, die alle notwendigen Dateien, Abhängigkeiten und Laufzeitumgebungen für das Ausführen einer Anwendung sowie die Anwendung selbst enthält. Hingegen ist ein Container eine laufende, nicht schreibgeschützte Instanz dieser Image-Datei, so wie ein laufendes Programm eine Instanz der auf der Festplatte installierten Programmdateien ist.

Somit ist ein Image eine binäre Datei, die im Dateisystem des Host-Rechners gespeichert ist und ein Container ein laufender Prozess, der sich im Arbeitsspeicher des Systems befindet. So wie ein Docker-Image benutzt wird, um einen Docker-Container zu erzeugen, kann ein laufender Container auch als Image gespeichert werden. Dieses wiederum kann benutzt werden, um denselben Container exakt zu replizieren.

Tipp

Der Begriff „Docker“ umfasst mehr als nur Images, Container und die Docker-Engine – im Laufe der Zeit hat sich ein wahres Docker-Tools-Ökosystem entwickelt! Inbegriffen sind etliche hilfreiche Tools und Plattformen wie Docker-Hub, -Swarm und -Machine. Unser Artikel zum Thema informiert Sie weiter.