Introducing G2.ai, the future of software buying.Try now

Containerbild

von Sagar Joshi
Ein Container-Image enthält ausführbaren Code, der notwendig ist, um eine Softwareanwendung auszuführen. Lernen Sie über seine Typen, Kernmerkmale, Funktionsweise und bewährte Praktiken.

Was ist ein Container-Image?

Ein Container-Image ist wie eine Vorlage für eine Softwareanwendung. Es speichert alle Verfahren zum Ausführen der Anwendung in einer Cloud-Umgebung.

Das Container-Image stellt sicher, dass die Software in allen Systemen und Servern mit einem vertrauten Container ähnlich funktioniert. Es bietet eine konsistente Nutzung, was die Bereitstellung schnell und einfach macht.

Mit diesem Prozess sparen Ingenieurteams Kosten, indem sie Ressourcen effizient nutzen und die Wartungshäufigkeit reduzieren. Viele Organisationen verwenden Container-Registry-Software, um Container-Images zu speichern, was Teams hilft, Images zu verwalten, die in Anwendungen und Netzwerken verteilt sind.

Arten von Container-Images

Verschiedene Images dienen unterschiedlichen Zwecken bei der Verwendung des Containers. Nachfolgend sind einige der gängigen Typen aufgeführt.

  • Basis-Images dienen als Ausgangspunkt für die Erstellung neuer Container-Images. Sie enthalten in der Regel nur das Betriebssystem.
  • Offizielle Images werden vom Softwareanbieter bereitgestellt und gewartet.
  • Benutzerdefinierte Images helfen, spezifische Anforderungen zu erfüllen. Sie beginnen mit einem Basis- oder offiziellen Image und fügen Schichten mit angepasstem Code und Konfigurationen hinzu.
  • Anwendungsspezifische Images enthalten sowohl die Anwendung als auch ihre Abhängigkeiten. Sie sind auf eine bestimmte Anwendung zugeschnitten.
  • Sprachspezifische Images besitzen die Container-Engine für eine bestimmte Programmiersprache, wie Python, Node.js oder Java.
  • Service-Images erfüllen spezielle Anforderungen, wie eine Datenbank, Webserver oder Nachrichtenwarteschlange.
  • Minimale Images enthalten nur das Wesentliche, das zum Ausführen einer Anwendung erforderlich ist. Sie helfen, die Größe und potenzielle Sicherheitsrisiken zu reduzieren.
  • Mehrstufige Images können in jedem Schritt des Prozesses einem bestimmten Zweck dienen – wie Code zu erstellen oder Tests durchzuführen. Die letzte Stufe enthält nur das Notwendige, um die Anwendung auszuführen.
  • Geschichtete Images ermöglichen eine bessere Nutzung von Cache und Speicher als eingebaute Schichten.

Kernmerkmale von Container-Images

Container-Images sind entscheidend für die Entwicklung und Bereitstellung von cloud-nativen Anwendungen. Hier sind einige bemerkenswerte Merkmale, die sie zu einer geeigneten Wahl für Ingenieurteams machen.

  • Unveränderlich. Container-Images sind nicht veränderbar und gewährleisten Konsistenz in verschiedenen Umgebungen.
  • Leichtgewichtig. Sie enthalten nur notwendige Komponenten anstelle des gesamten Betriebssystems, was sie leicht macht.
  • Portabel. Jede Plattform oder Cloud, die Container-Runtime unterstützt, kann Container-Images verwenden.
  • Versionierung. Container-Images halten frühere Versionen zugänglich, falls benötigt.
  • Geschichtetes Dateisystem. Jede Anweisung in der Dockerfile fügt beim Erstellen eines Images eine neue Schicht hinzu. Dieser Ansatz gewährleistet optimalen Speicher, da gemeinsame Schichten zwischen Images nur einmal gespeichert werden.
  • Repository-Speicherung. Ein Container-Registry oder Repository speichert Container-Images mit ordnungsgemäßer Versionierung.
  • Sicherheitsscans. Einige Container-Registries bieten Sicherheitsscans, um Schwachstellen zu erkennen.
  • Metadaten. IT-Profis können Metadaten zu Container-Images hinzufügen, um zusätzliche Informationen über das Image bereitzustellen.

Wie funktioniert ein Container-Image?

Hier ist eine Schritt-für-Schritt-Erklärung, wie ein Container-Image funktioniert.

  • Erstellung. Eine Textdatei namens "Dockerfile" oder ähnlich erstellt ein Container-Image, basierend auf der Container-Plattform. Diese Datei enthält Anweisungen, was in das Image aufgenommen werden soll, wie das Basisbetriebssystem, Anwendungscode und andere Dateien oder Einstellungen.
  • Erstellung. Die Container-Engine verarbeitet die Dockerfile, um das tatsächliche Image zu erstellen. Das Image wird Schicht für Schicht erstellt, gemäß den Anweisungen in der Dockerfile.
  • Speicherung. Das Container-Registry speichert das Image. Es kann ein öffentliches oder ein privates Registry sein.
  • Bereitstellung. Der Entwickler zieht das Image entweder auf seine lokale Maschine oder einen Server, um es auszuführen.
  • Ausführung. Die Container-Engine liest das Image und erstellt einen isolierten Container, um die Anwendung auszuführen. Dieser Container hat sein eigenes Dateisystem, Netzwerk und isolierten Prozessraum, was ihn unabhängig vom Hostsystem macht.
  • Laufzeit. Während der Ausführung verwendet der Container die Bibliotheken und Abhängigkeiten aus seinem Image, um die Anwendung auszuführen. Er kann unabhängig von anderen Containern gestoppt, gestartet und entfernt werden.
  • Skalierung. Falls erforderlich, können mehrere Container aus demselben Image ausgeführt werden, was es einfach macht, die Anwendung zu skalieren.
  • Aktualisierung. Wenn die Anwendung oder ihre Abhängigkeiten ein Update benötigen, wird ein neues Image erstellt, und die bestehenden Container aus dem alten Image ersetzen die neuen Container.

Container-Image vs. Docker-Container

Ein Container-Image ist ein Bauplan mit allen Codes und Abhängigkeiten, die erforderlich sind, damit eine Anwendung in einer cloud-nativen Umgebung läuft. Es ist unveränderlich, um ein konsistentes Verhalten der Anwendung zu gewährleisten, wenn sie auf verschiedenen Plattformen oder Clouds ausgeführt wird.

Docker-Container sind eigenständige Laufzeitinstanzen. Sie bestehen aus einer schreibgeschützten Schicht und fügen eine Lese-/Schreibschicht oben hinzu.

Erfahren Sie mehr über Container-Registry und warum es eine All-in-One-Lösung für den Aufbau cloud-nativer Anwendungen ist.

Sagar Joshi
SJ

Sagar Joshi

Sagar Joshi is a former content marketing specialist at G2 in India. He is an engineer with a keen interest in data analytics and cybersecurity. He writes about topics related to them. You can find him reading books, learning a new language, or playing pool in his free time.