Was ist der Unterschied zwischen Docker-Images und Containern?


Was ist der Unterschied zwischen Docker-Images und Containern?

Docker-Images und Container sind Technologien zur Anwendungsbereitstellung. Um eine Anwendung auf Ihrem Computer auszuführen, mussten Sie traditionell die Version installieren, die dem Betriebssystem Ihres Computers entsprach. Nun können Sie jedoch ein einzelnes Softwarepaket oder einen Container erstellen, der auf allen Arten von Geräten und Betriebssystemen ausgeführt werden kann. Docker ist eine Softwareplattform, die Software in Container verpackt. Docker-Images sind schreibgeschützte Vorlagen, die Anweisungen zum Erstellen eines Containers enthalten. Ein Docker-Image ist ein Snapshot oder eine Vorlage der Bibliotheken und Abhängigkeiten, die in einem Container für die Ausführung einer Anwendung erforderlich sind.

Mehr über Docker lesen »

Warum werden Docker-Images und Container verwendet?

Container ermöglichen es Entwicklern, Software so zu verpacken, dass sie auf jedem Zielsystem ausgeführt werden kann. Bisher mussten Sie Software speziell für verschiedene Zielsysteme paketieren. Wenn Sie beispielsweise eine Anwendung auf macOS und Windows ausführen wollten, mussten Sie das Anwendungsdesign ändern und es für die verschiedenen Systeme verpacken.

Durch die Containerisierung kann eine Softwareanwendung als Microservices auf verteilten, plattformübergreifenden Hardwarearchitekturen ausgeführt werden. Da Container sehr portabel sind, können diese Softwareanwendungen auf fast jedem Computer ausgeführt und schnell bereitgestellt werden. Beispielsweise kann eine Unternehmensanwendung Hunderte von Microservices enthalten. Sie könnten als Container auf mehreren Maschinen und virtuellen Maschinen (VMs) in einem dedizierten Rechenzentrum und der Cloud ausgeführt werden.

So funktionieren sie: Docker-Images im Vergleich zu Docker-Containern

Docker ist eine Containerisierungsplattform, mit der Sie Software in Containern verpacken und auf Zielcomputern ausführen können. Docker-Container laufen auf jeder Maschine oder virtuellen Maschine, auf der die Docker-Engine installiert ist. Und sie laufen ohne Kenntnis der zugrundeliegenden Systemarchitektur. Die Docker-Engine läuft nur auf dem Linux-Betriebssystem. Ein Docker-Container ist ein Container, der mithilfe der Docker-Containerisierungsplattform erstellt wurde. Es gibt auch andere, weniger beliebte Containerisierungsplattformen.

Weitere Informationen über Containerisierung »

So funktionieren Docker-Container

Ein Docker-Container ist eine Laufzeitumgebung mit allen notwendigen Komponenten – wie Code, Abhängigkeiten und Bibliotheken –, die benötigt werden, um den Anwendungscode auszuführen, ohne Abhängigkeiten von Host-Maschinen zu verwenden. Diese Container-Laufzeit wird auf der Engine auf einem Server, einer Maschine oder einer Cloud-Instance ausgeführt. Die Engine führt je nach den verfügbaren zugrundeliegenden Ressourcen mehrere Container aus. 

Um eine Reihe von Containern bereitzustellen und zu skalieren, um effektiv zwischen verschiedenen Maschinen oder virtuellen Maschinen zu kommunizieren, benötigen Sie eine Container-Orchestrierungsplattform wie Kubernetes. Dies hilft, unabhängig davon, ob sich Ihre Maschinen vor Ort oder in der Cloud befinden. Kubernetes verwaltet mehrere Maschinen, sogenannte Cluster, im Rahmen von Containeroperationen.

Weitere Informationen über Kubernetes »

So funktionieren Docker-Images

Ein Docker-Image oder Container-Image ist eine eigenständige, ausführbare Datei, die zum Erstellen eines Containers verwendet wird. Dieses Container-Image enthält alle Bibliotheken, Abhängigkeiten und Dateien, die der Container zum Ausführen benötigt. Ein Docker-Image ist gemeinsam nutzbar und portabel, sodass Sie dasselbe Image an mehreren Orten gleichzeitig bereitstellen können – ähnlich wie eine Software-Binärdatei. 

Sie können Images in Registern speichern, um den Überblick über komplexe Softwarearchitekturen, Projekte, Geschäftsbereiche und Benutzergruppenzugriffe zu behalten. Die öffentliche Docker-Hub-Registry enthält beispielsweise Images wie Betriebssysteme, Programmiersprachen-Frameworks, Datenbanken und Code-Editoren. 

Tastenbefehle: Docker-Images im Vergleich zu Docker-Containern

Sie verwenden Befehle mit Parametern, um Docker-Container zu manipulieren. Das Standardbefehlsformat ist docker [Optionen] [Befehl] [Argumente].

Container-Befehle

Die folgende Tabelle enthält häufig verwendete Container-Befehle. In der Docker-Dokumentation sind mehrere weitere aufgeführt.

Befehl

Erläuterung

docker ps -a

Listet alle Container auf. Das Flag -a zeigt sowohl laufende als auch nicht laufende Container an. Um nur laufende Container anzuzeigen, kann dieses Flag weggelassen werden.

docker rename [container] [neuer_name]

Benennt den angegebenen Container in neuer_name um.

Docker-Start [Container]

Führt den angegebenen Container aus.

Docker-Stopp [Container]

Stoppt den angegebenen Container.

Docker-Pause [Container]

Lässt den angegebenen Container warten, bis andere laufende Container anhalten.

Image-Befehle

Im Vergleich zu Container-Befehlen gibt es weniger Image-Befehle.

Docker build -t image_name

Erzeugt ein Docker-Image mit dem Tag image_name aus den Dateien im aktuellen Verzeichnis.

Docker-Erstellung [image]

Erzeugt einen nicht laufenden Container aus dem angegebenen Image.

docker run [image]

Erzeugt einen Container, der auf dem angegebenen Image basiert, und führt ihn aus.

Docker-Container aus Docker-Images erstellen

Um einen Container aus einem bestimmten Docker-Image zu erstellen, starten Sie die Engine auf einer Maschine. Verwenden Sie dann den grundlegenden Docker-Run-Befehl.

Hier ist ein Beispielsbefehl:

Docker-Ausführung -it MyImage bash

Dieser Befehl erstellt einen Container aus einer Image-Datei mit dem Namen MyImage. Das -it erstellt ein Pseudo-Terminal innerhalb des laufenden Containers. Und wenn Sie bash als Befehl angeben, wird ein Bash-Terminal innerhalb des Containers geöffnet.

Hauptunterschiede: Docker-Images im Vergleich zu Docker-Containern

Ein Docker-Container ist eine eigenständige, lauffähige Softwareanwendung oder ein Service. Andererseits ist ein Docker-Image die Vorlage, die in den Container geladen wird, um ihn auszuführen, etwa wie eine Reihe von Anweisungen.

Sie speichern Images zur gemeinsamen Nutzung und Wiederverwendung, aber Sie erstellen und zerstören Container im Laufe des Lebenszyklus einer Anwendung. Als nächstes geben wir weitere Unterschiede an.

Quelle

Sie erstellen ein Docker-Image aus einer Docker-Datei, einer für Menschen lesbaren Textdatei, die einer Konfigurationsdatei ähnelt. Die Docker-Datei enthält alle Anweisungen zum Erstellen des Images. Sie müssen die Docker-Datei zusammen mit allen zugehörigen Bibliotheken und Abhängigkeiten in einem Ordner ablegen, um das Image zu erstellen.

Im Gegensatz dazu erstellen Sie Docker-Container direkt aus der Docker-Image-Datei. 

Zusammensetzung

Die Docker-Image-Datei besteht aus Image-Schichten, um die Dateigröße gering zu halten.  Jede Schicht stellt eine Änderung dar, die am Image vorgenommen wurde. Die Schichten sind schreibgeschützt und können von mehreren Containern gemeinsam genutzt werden.

Der Docker-Container, der eine Image-Instance ist, enthält auch Schichten. Er hat jedoch eine zusätzliche beschreibbare Schicht obenauf, die als Container-Schicht bezeichnet wird. Die Container-Schicht ermöglicht Lese- und Schreibzugriff. Außerdem können alle Änderungen, die innerhalb des Containers vorgenommen werden, von anderen Containern isoliert werden, die auf demselben Image basieren.

Veränderlichkeit

Docker-Images sind unveränderlich, was bedeutet, dass sie nach der Erstellung nicht mehr geändert werden können. Wenn Änderungen an einem Image vorgenommen werden müssen, müssen Sie ein neues Image mit den gewünschten Änderungen erstellen.

Im Gegensatz dazu sind Container veränderbar und ermöglichen Änderungen während der Laufzeit. Änderungen, die innerhalb eines Containers vorgenommen werden, gelten nur für diesen bestimmten Container und wirken sich nicht auf das zugehörige Image aus. Einige Beispiele für Änderungen sind das Schreiben neuer Dateien, das Installieren von Software oder das Ändern von Konfigurationen.

Wann zu verwenden: Docker-Images im Vergleich zu Docker-Containern

Sie können Docker-Images und Container in Kombination miteinander verwenden, wenn Sie Software erstellen und bereitstellen.

Sie verwenden Container, um Anwendungen einmal zu erstellen und sie dann überall auszuführen. Sie können Container nach Bedarf schnell starten, stoppen und neu starten. Es ist also einfach, je nach Bedarf der Anwendung nach oben oder unten zu skalieren.

Davon abgesehen ist die Verwaltung einfacher, wenn Sie sowohl Images als auch Container verwenden. So können Sie sie zum Beispiel zusammen verwenden:

  • Skalieren Sie Ihre Anwendung horizontal, indem Sie mehrere Instances von Containern ausführen, die auf demselben Image basieren.
  • Automatisieren Sie Pipelines für kontinuierliche Integration und Bereitstellung (CI/CD), indem Sie verschiedene Images für Entwicklungs-, Test- und Produktionsumgebungen verwenden.
  • Taggen und verwalten Sie verschiedene Versionen Ihrer Images. Auf diese Weise können Sie bestimmte Versionen nach Bedarf rückgängig machen oder bereitstellen.

Zusammenfassung der Unterschiede: Docker-Images im Vergleich zu Docker-Containern

 

Docker-Image

Docker-Container

Wie lautet es?

Eine wiederverwendbare, gemeinsam nutzbare Datei, die zum Erstellen von Containern verwendet wird.

Eine Runtime-Instance; eine eigenständige Software.

Erstellt von

Softwarecode, Abhängigkeiten, Bibliotheken und eine Docker-Datei.

Ein Image.

Zusammensetzung

Schreibgeschützte Schichten.

Schreibgeschützte Schichten mit einer zusätzlichen Lese- und Schreibschicht darüber.

Veränderlichkeit

Unveränderlich. Wenn es Änderungen gibt, müssen Sie eine neue Datei erstellen.

Veränderbar; Sie können es zur Laufzeit nach Bedarf ändern.

Einsatzbereich

Um Anwendungs-Konfigurationsdetails als Vorlage zu speichern. 

Um die Anwendung auszuführen.

Wie kann AWS Ihnen bei Ihren Container- und Image-Anforderungen helfen?

Amazon Web Services (AWS) hat viele Angebote, die Ihnen einen sicheren Ort zum Speichern und Verwalten Ihrer Container-Images bieten.

Wir bieten eine Orchestrierung, die verwaltet, wann und wo Ihre Container ausgeführt werden, und flexible Rechen-Engines, die Ihre Container unterstützen. AWS kann Sie bei der Verwaltung Ihrer Container und deren Bereitstellung unterstützen, sodass Sie sich nicht um die zugrunde liegende Infrastruktur kümmern müssen. Weitere Informationen finden Sie unter Container in AWS.

Amazon Elastic Container Registry (Amazon ECR) ist ein vollständig verwaltetes Container-Registry, das leistungsstarkes Hosting bietet. So können Sie Anwendungs-Images und Artefakte zuverlässig überall bereitstellen. Entwickler, die containerbasierte Anwendungen erstellen, können jetzt offizielle Docker-Images direkt von Amazon ECR Public entdecken und herunterladen.

Amazon Elastic Container Service (Amazon ECS) ist ein vollständig verwalteter Container-Orchestrierungs-Service. Es erleichtert Ihnen die Bereitstellung, Verwaltung und Skalierung containerisierter Anwendungen. Amazon ECS verwendet Docker-Images in Aufgabendefinitionen, um Container zu starten.

Beginnen Sie mit Docker in AWS, indem Sie noch heute ein Konto erstellen.

Nächste Schritte mit AWS

Einstieg in die Erstellung mit Docker-Images
Erste Schritte mit Amazon Elastic Container Service 
Einstieg in die Entwicklung mit Containern
Erste Schritte mit Containern in AWS